public class TestTwhere T:class代表类型参数T只能是引用类型

时间:2021-11-03 05:29:57

C#根本入门 八 泛型

C#中的泛型能够将类型作为参数来通报,即在创建类型时用一个特定的标记,如“T”来作为一个占位符,取代实际的类型,期待实例化时用一个实际的类型来取代。

public class Test<T> { public void Swap(T a,T b) { } }

使用泛型类型可以最大限度的重用代码、掩护类型的安适以及提高性能

降低了强制转换或装箱操纵的本钱或危害、可以对泛型进行约束以访谒特定数据类型的要领

实例化:Test<int> test1 = new Test<int>();

注意:类型参数并不是只有一个,可以有多个,类型参数可以是编译器识另外任何类型,类型参数的名字不能随便起,不能重名。

public class Test<T,U> { public void Swap(T a, U b) { } } class MainClass { public static void Main(string[] args) { Test<int,double> test1 = new Test<int,double>(); test1.Swap(1, 2.33); } }

public class Test<T>where T:struct代表类型参数T只能是值类型。public class Test<T>where T:class代表类型参数T只能是引用类型。

泛型类和泛型要领

泛型类封装不是特定于具体数据类型的操纵,泛型类最常用语调集,像从调集中添加和移除项这样的操纵都以梗概上不异的方法执行,,与所存储数据的类型无关。

创建泛型类的过程:从一个现有的具体类开始,逐一将每个类型变动为类型参数,直至到达通用化和可用性的最佳平衡。

class BaseNode { int a;int b; } class BaseNodeGeneric<T> { T a;T b; } public class Person { public string name; public int age; public char sex; public string Print(string c){ return c; } } 下一步: public class Person<S,I,C> { public S name; public I age; public C sex; public S Print(S c){ return c; } } class MainClass { public static void Main(string[] args) { Person<string, int, char> person = new Person<string, int, char>(); Console.WriteLine(person.Print("zxh")); } }