Sdílet prostřednictvím


Compilerfehler CS0425

Aktualisiert: November 2007

Fehlermeldung

Die Einschränkungen für den 'Typparameter'-Typparameter der 'Methode'-Methode müssen mit den Einschränkungen für den 'Typparameter'-Typparameter der 'Methode'-Schnittstellenmethode übereinstimmen. Verwenden Sie stattdessen eine explizite Schnittstellenimplementierung.
The constraints for type parameter 'type parameter' of method 'method' must match the constraints for type parameter 'type parameter' of interface method 'method'. Consider using an explicit interface implementation instead.

Dieser Fehler tritt auf, wenn eine virtuelle generische Methode in einer abgeleiteten Klasse überschrieben wird und die Einschränkungen der Methode der abgeleiteten Klasse nicht den Einschränkungen der Methode der Basisklasse entsprechen. Um diesen Fehler zu vermeiden, stellen Sie sicher, dass die where-Klausel in beiden Deklarationen identisch ist. Implementieren Sie andernfalls die Schnittstelle explizit.

Beispiel

Im folgenden Beispiel wird CS0425 generiert:

// CS0425.cs

class C1
{
}

class C2
{
}

interface IBase
{
    void F<ItemType>(ItemType item) where ItemType : C1;
}

class Derived : IBase
{
    public void F<ItemType>(ItemType item) where ItemType : C2  // CS0425
    {
    }
}

class CMain
{
    public static void Main()
    {
    }
}

Für die Einschränkungen ist keine literale Entsprechung erforderlich, sofern die Bedeutung der Einschränkungen identisch ist. Die folgende Verwendung ist z. B. möglich:

// CS0425b.cs

interface J<Z>
{
}

interface I<S>
{
    void F<T>(S s, T t) where T: J<S>, J<int>;
}

class C : I<int>
{
    public void F<X>(int s, X x) where X : J<int>
    {
    }

    public static void Main()
    {
    }
}