哎呀,看到别人的博客感觉好佩服啊,你们写的太好了,我都不知道怎么写,可是我只想把我自己的总结放到上边希望能提供一些帮助。。
也希望大家多多指点,毕竟是新手,总有些不足,希望我们能共同进步...
下面说一下我的小总结吧。个人对泛型和委托的见解:
委托:是一种数据类型,它类似函数指针,并且是类型安全,可以定义回调方法,只要是与委托的返回类型和参数类型相同的方法(或多个方法)都可以赋值给委托的一个实例,从而提高了程序的扩展性。但是如果对委托的实例任意的进行赋值操作就会破坏其封装性,这时我们可以通过event关键字来对委托的实例进行封装。
View Code
1 namespace delegate 2 { 3 //定义一个委托对象,并传递一个参数 4 public delegate void del(); 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 a a1 = new a(); 10 b b1 = new b(); 11 a1.d += b1.zhixing; 12 a1.fangfa(); 13 Console.ReadLine(); 14 } 15 } 16 //定义一个发布委托的对象 17 public class a 18 { 19 //定义一个事件对委托实例进行封装 20 public event del d; 21 public void fangfa() 22 { 23 for (int i = 0; i <= 100; i++) 24 { 25 if (i > 95) 26 { 27 if (d != null) 28 { 29 d(); 30 } 31 } 32 } 33 } 34 } 35 //定义一个执行委托的对象 36 public class b 37 { 38 public void zhixing() 39 { 40 Console.WriteLine("水开了"); 41 } 42 } 43 }
泛型: 泛指的类型,其类型可以是任意的,但确定后必须一致使用此类型,不得更换。例如 List<T>中T可以是任意类型(只能确定的一种)这样可以减少装箱和拆箱操作,提高程序执行效率。把值类型的数据赋值给引用类型,叫装箱操作。把已经装箱过的引用类型强制转换为值类型叫拆箱操作。泛型类的构造函数内不含<>.下面是泛型类的定义:
View Code
1 using System; 2 using System.Collections.Generic; 3 public class Test 4 { 5 public static void Main() 6 { 7 //定义一个泛型People 8 People<string,int> p = new People<string,int>(); 9 } 10 } 11 public class People<Q,T> 12 { 13 public T Age 14 { 15 get;set; 16 } 17 public Q Name 18 { 19 get;set; 20 } 21 //构造函数 22 public People() 23 { 24 } 25 public People(Q q,T t) 26 { 27 this.Name = q; 28 this.Age = t; 29 } 30 }
这是我的个人总结,希望大家有意见尽管提出来,我们共同进步!