Číst v angličtině

Sdílet prostřednictvím


Chyba kompilátoru CS0425

Omezení parametru typu "parametr type" metody "method" musí odpovídat omezením parametru typu "parametr type" metody "method". Místo toho zvažte použití explicitní implementace rozhraní.

K této chybě dochází, pokud je virtuální obecná metoda přepsána v odvozené třídě a omezení metody v odvozené třídě neodpovídají omezením metody v základní třídě. Pokud se chcete této chybě vyhnout, ujistěte se, že where je klauzule v obou deklaracích stejná, nebo implementujte rozhraní explicitně.

Příklad 1

Následující příklad vygeneruje CS0425:

C#
// 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()  
    {  
    }  
}  

Příklad 2

Omezení nemusí být literálová shoda, pokud má sada omezení stejný význam. Například toto je v pořádku:

C#
// 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()  
    {  
    }  
}