C# 定义泛型类

要定义泛型类,只需要在类定义中包含<>语法即可,例如:

Class myGenericClass <T><br/>{<br/>     //这是泛型类的定义方法。<br/>}



T可以是任意标识符。
泛型类还可以包含多个类型,他们用逗号隔开,例如:

Class myGenericClass <T1,t2,t3,t4,…><br/>{<br/>     //这是泛型类的定义方法。<br/>}



1.default关键字
要确定用于创建泛型的类实例的类型,需要了解一个最基本的情况:它们是引用类型还是值类型。如果不知道类型,就不能用下面的代码给赋予null值。

<br/>public myGenericClass()<br/>{<br/>     innerT1Object=null;<br/>}<br/>



如果T1是值类型,则上面的代码不能编译。
可以使用default关键字的新方法来解决它:

<br/>public myGenericClass()<br/>{<br/>     innerT1Object=default(T1);<br/>}<br/>


其结果是,如果innerT1Object是引用类型,就给它赋予null,如果它是值类型,就给它赋予默认值。对于数字类型,这个默认值是0;而结构根据其各个成员的类型,以相同的方式初始化为0或null。

2.约束类型

约束类型使用where关键字来实现。

class myGenericClass <T> where T :  constraint<br/>{<br/>   ……<br/>}


其中constraint定义了约束。
可以用这种方式提供许多约束!

class myGenericClass <T> where T :  constraint1,constaint2<br/>{<br/>   ……<br/>}



还可以使用多个where语句,定义泛型类需要的任意类型或所有类型上的约束:

class myGenericClass <T1,T2> where T1:  constraint1 where T2:  constraint2<br/>{<br/>   ……<br/>}

0 条留言

我要留言
(必填)
(必填,绝不公开)