泛型的介绍
类型参数与约束
类型参数 (Type Parameters):即尖括号
<>中的占位符,如T。常见的命名约定是使用T或以T开头的描述性名称(如TKey,TValue)。约束 (Constraints):你可以对类型参数施加约束,限制其必须是特定类型、实现某个接口或拥有无参构造函数等,从而允许在泛型代码中调用该类型的方法。常见约束有:
where T : struct:T 必须是值类型。where T : class:T 必须是引用类型。where T : new():T 必须有一个无参公共构造函数。where T : IMyInterface:T 必须实现IMyInterface接口。
①泛型类
//定义 public class MyContainer<T> { public T Value { get; set; } } //使用,指定实际类型 var c = new MyContainer<int>();
②泛型方法
方法可以独立泛型,所属类不一定是泛型类
public void Print<T>(T item) { Console.WriteLine(item); }③泛型接口 & 泛型委托
interface IFoo<T> {} Func<TIn,TOut> //内置泛型委托 Action<T>3. 泛型约束where
限制类型参数 T 必须满足的条件,没有约束时 T 可以是任意类型。可以多个约束叠加。