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.参数传入前值被装箱,接收到拆箱,装箱拆箱会造成损失
时间: 2024-10-19 01:56:03