用法如下:
public interface IEntity
{
}
public class FutureResult<T> where T : class , IEntity , new()
{
}
使用where来限定T必须是class, 必须是继承自IEntity的类型,而且该类必须有无参构造函数
前面两个好理解,new()的意思就是说该类必须有公共的无参构造函数
如果我这样写:
public class CodeInfo: IEntity
{
public CodeInfo(int i)
{
}
}
那么我使用的时候会报错,如下图:
所以必须去掉这个参数为int的构造函数,因为类默认会添加一个公共无参构造,所以不写构造函数也是可以的。
比如这样,什么都没有的一个类:
public class CodeInfo: IEntity
{
}
可以继承多个接口,如:
public class FutureResult<T> where T : class , IEntity ,IQueryable
{
}
但是class必须位于最前面,new()必须位于最后
可以限定多个类型,如:
public class FutureResult<T,Y>
where T : class, IEntity, IQueryable
where Y : struct
{
}
可以为T,和Y都限定类型
可以用于类,方法,和委托,如:
//可用于类:
public class FutureResult<T> where T:IQueryable { }
//可用于方法:
public bool MyMethod<T>(T t) where T : class { }
//可用于委托:
delegate T MyDelegate<T>() where T : new()
————————————————
版权声明:本文为CSDN博主「Bird鸟人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wcc27857285/article/details/96424449