.NET Core泛型约束
如果一个类/引入了泛型类型,那么可以对引入的泛型写一个约束,让传入的泛型类型必须具备某些条件才能传入
public class Person<T> where T : base-class //类型T必须是base-class的子类
public class Person<T> where T : interface //类型T必须实现interface的接口
public class Person<T> where T : class //类型T必须是引用类型
public class Person<T> where T : struct //类型T必须是值类型
public class Person<T> where T : new() //类型T必须有一个无参的构造函数
泛型类型不仅可以用于类的定义,还可以用于方法的定义
public T Person<T> (T t) where T : new()
{
T t1=new T();
t=t1;
return t;
}
泛型类可以有子类,子类可以选择继承父类的引入泛型类型,也可以选择直接继承父类某种特定类型,也可以引入新的泛型类型
public class Person<T> {}
public class Student<T>:Person<T>{}//Student继承了父类的泛型类型引入
public class Person<T> {}
public class Student:Person<int>{}//Student继承了引入int类型的父类
public class Person<T> {}
public class Student<T,TKey>:Person<T>{}//Student继承了引入泛型类型的父类,自己也引入了新的类型
封闭类型参数的时候(就是确定泛型参数的类型),可以将类自己作为具体的类型如:
public class Person<T> : Where T :Person<T>{}//表示引入的类型必须继承自己
public class Person:IEquatable<Person>//表示封闭泛型类型为自己
{
public string Name{get;set;}
public bool Equals(Person p)
{
return p.Name==Name;
}
}
同一个类中不同封闭类型的静态成员数据相互独立
标签:Core,public,Person,Student,类型,泛型,NET,class From: https://www.cnblogs.com/lrplrplrp/p/16746864.html