例:
public class BaseClass<T> where T : new()
{
public T SomeMethod()
{
return new T();
}
}
第一:
where只用于泛型
第二:
where T : new()的意思是,这个T必须有public构造函数,如果new BaseClass<T>()的时候,这个T没有public 构造函数,将编译错误.
第三:
除了new(),where后面可以有好多种内容,去约束T.比如:public class MyGenericClass<T> where T:IComparable { }等.
Constraint |
Description |
---|---|
where T: struct |
The type argument must be a value type. Any value type except Nullable can be specified. See Using Nullable Types (C# Programming Guide) for more information. |
where T : class |
The type argument must be a reference type; this applies also to any class, interface, delegate, or array type. |
where T : new() |
The type argument must have a public parameterless constructor. When used together with other constraints, the new() constraint must be specified last. |
where T : <base class name> |
The type argument must be or derive from the specified base class. |
where T : <interface name> |
The type argument must be or implement the specified interface. Multiple interface constraints can be specified. The constraining interface can also be generic. |
where T : U |
The type argument supplied for T must be or derive from the argument supplied for U. |
https://msdn.microsoft.com/en-us/library/d5x73970.aspx