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ě.
Následující příklad vygeneruje CS0425:
// 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()
{
}
}
Omezení nemusí být literálová shoda, pokud má sada omezení stejný význam. Například toto je v pořádku:
// 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()
{
}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: