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()"