編譯器錯誤 CS0460
覆寫及明確介面實作方法的條件約束,繼承自基底方法,所以無法直接指定。
當屬於衍生類別的泛型方法覆寫基底類別中的方法時,您不能指定受覆寫的方法上的條件約束。 衍生類別中的覆寫方法會從基底類別中的方法繼承其條件約束。
下列範例會產生 CS0460:
// CS0460.cs
// compile with: /target:library
class BaseClass
{
BaseClass() { }
}
interface I
{
void F1<T>() where T : BaseClass;
void F2<T>() where T : struct;
void F3<T>() where T : BaseClass;
}
class ExpImpl : I
{
void I.F1<T>() where T : BaseClass {} // CS0460
void I.F2<T>() where T : class {} // CS0460
}