东莞 网站建设,网站定制制作公司,一个关键词要刷多久,产品设计哪家公司好文章目录1、泛型2、泛型约束2.1、值类型2.2、引用类型2.3、存在无参公共构造函数的非抽象类型2.4、某个类本身或其派生类2.5、某个接口的派生类2.6、另一个泛型类型本身或其派生类型3、约束组合使用4、多个泛型约束1、泛型
class 类名<T>interface 接口名<T>函数名…
classTest<T> where T:struct
{publicTValue;publicvoidTestFun<K>(K k) where K:struct{Console.WriteLine(k);}}// 某方法内↓↓↓Test<int> test =newTest<int>();test.Value=10;test.TestFun(test.Value);// 10
2.2、引用类型
classTest<T> where T:class{publicTValue;publicvoidTestFun<K>(K k) where K:class{Console.WriteLine(k);}}// 某方法内↓↓↓Test<string> test =newTest<string>();test.Value="嘎嘎";test.TestFun(test.Value);// "嘎嘎"
2.3、存在无参公共构造函数的非抽象类型
classTest<T> where T:new(){publicTValue;publicvoidTestFun<K>(K k) where K:new(){Console.WriteLine(k);}}classMyCons{public override string ToString(){return"这是一个有无参构造的类的ToString()";}}// 某方法内↓↓↓Test<MyCons> test =newTest<MyCons>();test.Value=newMyCons();test.TestFun(test.Value);// "这是一个有无参构造的类的ToString()"
2.4、某个类本身或其派生类
classTest<T> where T:MyCons{publicTValue;publicvoidTestFun<K>(K k) where K:MyCons{Console.WriteLine(k);}}classMyCons{public override string ToString(){return"这是MyCons的ToString()";}}// 某方法内↓↓↓Test<MyCons> test =newTest<MyCons>();test.Value=newMyCons();test.TestFun(test.Value);// "这是MyCons的ToString()"
2.5、某个接口的派生类
classTest<T> where T:ITest{publicTValue;publicvoidTestFun<K>(K k) where K:ITest{Console.WriteLine(k);}}interfaceITest{}classMyTest:ITest{public override string ToString(){return"这是 ITest 实现类 MyTest 的ToString()";}}// 某方法内↓↓↓Test<ITest> test =newTest<ITest>();test.Value=newMyTest();test.TestFun(test.Value);// "这是 ITest 实现类 MyTest 的ToString()"