Compilerfout CS0425
De beperkingen voor de typeparameter 'typeparameter' van de methode 'method' moeten overeenkomen met de beperkingen voor de typeparameter 'typeparameter' van de interfacemethode 'method'. Overweeg in plaats daarvan een expliciete interface-implementatie te gebruiken.
Deze fout treedt op als een virtuele algemene methode wordt overschreven in een afgeleide klasse en de beperkingen voor de methode in de afgeleide klasse niet overeenkomen met de beperkingen voor de methode in de basisklasse. Om deze fout te voorkomen, moet u ervoor zorgen dat de where
component identiek is in beide declaraties of de interface expliciet implementeert.
In het volgende voorbeeld wordt CS0425 gegenereerd:
// 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()
{
}
}
De beperkingen hoeven geen letterlijke overeenkomst te zijn, zolang de set beperkingen dezelfde betekenis heeft. Het volgende is bijvoorbeeld in orde:
// 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()
{
}
}
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven: