1.new() 约束表示T类型只能接受一个无参数构造函数的new T()。
2.struct值类型约束。
3.class引用类型约束。
4.自定义类型约束。
值类型:struct/int/double/bool/枚举。
引用类型:数组/类/接口/委托/object/字符串。
不论有多少约束,new()约束必须写在最后。
using System; namespace GenericTest { class Program { static void Main(string[] args) { Show(new Student());//输出结果 Student类 Console.ReadLine(); } static void Show<T>(T t) where T : new() // 约束表示T类型只能接受一个无参数构造函数的new T() { Console.WriteLine(t.ToString()); } static void Show<T>(T t) where T : class, new() { } } //泛型接口 interface ICalculateAble<T> { } //普通接口 interface ICalculateAble { } class Student { public override string ToString() { return "Student类"; } } }