Błąd kompilatora CS0425
Ograniczenia dla parametru typu "type parameter" metody "method" muszą być zgodne z ograniczeniami dla parametru typu "type parametr" metody interfejsu "method". Rozważ użycie jawnej implementacji interfejsu.
Ten błąd występuje, jeśli wirtualna metoda ogólna jest zastępowana w klasie pochodnej, a ograniczenia metody w klasie pochodnej nie są zgodne z ograniczeniami metody w klasie bazowej. Aby uniknąć tego błędu, upewnij się, że klauzula where
jest identyczna w obu deklaracjach lub jawnie zaimplementuj interfejs.
Poniższy przykład generuje 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()
{
}
}
Ograniczenia nie muszą być dopasowaniem literału, o ile zestaw ograniczeń ma takie samo znaczenie. Na przykład następujące elementy są w porzą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()
{
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: