泛型
1,泛型方法
2,泛型类
Public Class PersonHelper<T>Where T:Person,new()//确定了该类一定是 Person类或子类 new()表示可以用T t=new T();来实例化 { //用反射来进行T的实例化 T o=(T)Activator.CreateInstance(Typeof(T)); }
3,协变(out T)和逆变 (in T)
class Program { static void Main(string[] args) { //逆变和协变的原理——父类可以接受子类,里氏替换原则 IMyOut<Person> mp = new MyOut<Student>(); // out Person,相当于 Person p = new Student(); mp.GetT(); //MyIn里面接受的是Person,用Peron去接 接口传入的Student当然可以 IMyIn<Student> ms = new MyIn<Person>(); ms.GetT(new Student() { ID = 1, UserName = "Ace" }); } } class Person { public string UserName { get; set; } public int ID { get; set; } } class Student:Person { } //协变 interface IMyOut<out T> { T GetT(); } //逆变 interface IMyIn<in T> { void GetT(T t); } class MyOut<T> : IMyOut<T> { public T GetT() { return default; } } class MyIn<T> : IMyIn<T> { public void GetT(T t) { } }

浙公网安备 33010602011771号