类型参数作为约束 where T : U 的作用

public class ClassA {
}


public class ClassB : ClassA {
}


public class TTSS<T> {
  public void Add<U>(TTSS<U> items) where U : T {
    Console.WriteLine(items is TTSS<T>);
  }
}


TTSS<ClassA> ll = new TTSS<ClassA>();
TTSS<ClassB> lb = new TTSS<ClassB>();
ll.Add<ClassA>(ll); //返回true;
ll.Add<ClassB>(lb); //返回false;


从以上返回结果可以发现,TTSS<U>和TTSS<T>并不是同一个类型,能感觉出这种微妙的差异,但是目前还不清楚有什么实际应用场景;

posted on 2019-06-03 15:02  蒋博  阅读(140)  评论(0)    收藏  举报

导航