C# 4.0 这个代码中的关键字“Where”是什么意思?
我在乞讨。 这节课上的哪一节是什么意思? 为什么在代码中使用我? Where关键字的好处是什么C# 4.0 这个代码中的关键字“Where”是什么意思?,c#-4.0,C# 4.0,我在乞讨。 这节课上的哪一节是什么意思? 为什么在代码中使用我? Where关键字的好处是什么 public abstract class AbstractEntity { } public abstract class AbstractControl<E> where E: AbstractEntity { public abstract void Add(E entity); public abstract void M
public abstract class AbstractEntity
{
}
public abstract class AbstractControl<E> where E: AbstractEntity
{
public abstract void Add(E entity);
public abstract void Modify(E entity);
public abstract void Remove(E entity);
}
public abstract class AbstractSQLServerControl<E> : AbstractControl<E> where E : AbstractEntity
{
protected SQLServerConnectionManager connectionManager;
public AbstractSQLServerControl(string connectionString)
{
connectionManager = new SQLServerConnectionManager(connectionString);
}
}
其中是限制E允许的类型的约束 这是一个好主意 它需要调用此方法的泛型类型满足以下限制: 在T:类中无效诱惑东西
意味着T必须是一个类。编译器不允许您调用“temp42”其中称为约束。它确保您的类型参数E是从AbstractEntity派生的。如果在where之后指定了接口,则E需要实现该接口。在您的示例中,where指定类型参数E需要是AbstractEntity的派生。我建议您看看关于泛型的内容这是泛型的约束,请参阅。在您的问题中,where子句声明泛型类型E必须是AbstractEntity类型或派生自AbstractEntity类型
本质上,泛型是实现动态类型的一些好处的一种方法,具有静态类型的优点。根据实际考虑,没有任何约束的泛型有时过于宽松或宽泛,我们需要在编译时强制一些类型限制,这就是where子句的作用 E不必继承,它可能是一个抽象实体。请原谅我的错误术语。它必须派生自AbstractEntity,或者是AbstractEntity