码迷,mamicode.com
首页 > Windows程序 > 详细

C#委托三——泛型委托

时间:2015-04-03 11:22:03      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:c#委托   c#泛型委托   

PanPen120在CSDN上原创,如其他网站转载请注意排版和写明出处:

今天一直在研究委托,因为有函数指针的基础,还容易上手,但是对于一些概念和实践,总是为了弄的非常清楚而纠结,这几篇关于委托的文章我是结合《C#与.NET4高级程序设计》、MSDN、借鉴其他人的博文来总结话语,以最直接简洁的话来阐述清楚(在我弄懂之前网上的感觉都很模糊)

namespace GenericDelegate
{
    //泛型委托(泛到参数这里,可以接受一个任何类型的参数、返回值是void的方法,在委托对象创建的时候在具体什么类型参数)(参数数量和返回值固定的!)
    public delegate void MyGenericDelegate<T>(T arg);

    class Program
    {
        static void Main(string[] args)
        {
            MyGenericDelegate<string> strTarget = new MyGenericDelegate<string>(StringTarget);
            StringTarget("Some string data");

            strTarget("ss");

            MyGenericDelegate<int> intTarget = new MyGenericDelegate<int>(IntTarget);
            intTarget(9);

            Console.ReadLine();
        }

        static void StringTarget(string arg)
        {
            Console.WriteLine("arg in uppercase is : {0}", arg.ToUpper());
        }
        static void IntTarget(int arg)
        {
            Console.WriteLine("++arg is : {0}", ++arg);
        }
    }
}

泛型没有之前人们为了实现这个功能:

参数传入的是object

C#的程序员应该知道object类型是任何类型的基类

但是你第一次传入的是string,第二次传入的是int

带来的问题:

1.强制类型转换之前动态检查实际类型

2.参数传入前值被装箱,接收到拆箱,装箱拆箱会造成损失



C#委托三——泛型委托

标签:c#委托   c#泛型委托   

原文地址:http://blog.csdn.net/panpen120/article/details/44851631

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!