Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Błąd kompilatora CS0460

Ograniczenia dotyczące zastępowania i jawnych metod implementacji interfejsu są dziedziczone z metody podstawowej, więc nie można ich określić bezpośrednio

Gdy metoda ogólna, która jest częścią klasy pochodnej zastępuje metodę w klasie bazowej, nie można określić ograniczeń dla metody przesłoniętej. Metoda zastąpienia w klasie pochodnej dziedziczy jej ograniczenia z metody w klasie bazowej.

Przykład

Poniższy przykład generuje plik CS0460.

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