c#中new()约束符

例:

 

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

猜你喜欢

转载自blog.csdn.net/yuhan61659/article/details/81093707