C# 4.0 这个代码中的关键字“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

我在乞讨。 这节课上的哪一节是什么意思? 为什么在代码中使用我? Where关键字的好处是什么

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