在以下代码段(C# 2.0)中:
public abstract class ObjectMapperBase< T > where T : new()
{
internal abstract bool UpdateObject( T plainObjectOrginal,
T plainObjectNew,
WebMethod fwm,
IDbTransaction transaction );
}
继承者示例:
public abstract class OracleObjectMapperBase< T > : ObjectMapperBase< T > where T : new()
{
internal override bool UpdateObject( T plainObjectOrginal,
T plainObjectNew,
WebMethod fwm,
IDbTransaction transaction )
{
// Fancy Reflection code.
}
}
where
关键字有什么作用?
where 子句用于指定可用作泛型声明中定义的类型形参的实参的类型的约束。例如,您可以声明一个泛型类 MyGenericClass,使得类型参数 T 实现 IComparable 接口:
public class MyGenericClass<T> where T:IComparable { }
在这种特殊情况下,它表示 T 必须实现默认构造函数。
这是一个通用类型约束。这意味着泛型类型
T
必须实现零参数构造函数。
Where 关键字基本上是对类可以处理/使用的对象的约束。
取自 MSDN“new() 约束让编译器知道提供的任何类型参数必须具有可访问的无参数构造函数”
http://msdn.microsoft.com/en-us/library/6b0scde8(VS.80).aspx
这意味着 T 必须有一个公共默认构造函数。