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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);// "嘎嘎"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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()"
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()"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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()"