泛型限制

主要的约束类型如下:(如果按照约束实例化类,编译不能通过)
 1    ////T必须是值类型
 2     //public class MyClass<T> where T:struct
 3     //{
 4 
 5     //}
 6 
 7     //T必须是引用类型
 8     //public class MyClass<T> where T : class
 9     //{
10 
11     //}
12 
13     //T必须是Person或者Person的子类
14     //public class MyClass<T> where T : Person
15     //{
16 
17     //}
18 
19 
20     //T必须是某个接口类型,或者是实现了某个接口的类及其子类 这里的Person实现了某个接口
21     //public class MyClass<T> where T : Person
22     //{
23 
24     //}
25 
26     //T必须是某个类或者其子类,并且有个无参构造函数
27     //public class MyClass<T> where T : Person,new()
28     //{
29 
30     //}
31 
32     //对T没有要求,但是V必须是T的子类或者本身
33     public class MyClass<T,V> where T : V
34     {
35 
36     }
View Code

如何断定同一个类的,不同泛型类型的对象,是不同的数据类型?

1 public class MyClass<T>
2     {
3 
4     }
View Code

上面的泛型类实例化后,怎么断定是不同类型的对象?

1 //如何判断mc,mc2的数据类型不同?
2             MyClass<int> mc = new MyClass<int>();
3 
4             MyClass<string> mc2 = new MyClass<string>();
View Code

反编译后发现,切换到IL语言后,发现他们的数据类型不同,即时编译(JIT)后,数据类型就会显示出来。

posted @ 2017-04-30 18:18  wesley1680  阅读(109)  评论(0编辑  收藏  举报