Compilerfehler CS0559
Der Parametertyp für den Operator ++ oder -- muss der enthaltende Typ sein.
Bei der Methodendeklaration für eine Operatorüberladung müssen bestimmte Richtlinien beachtet werden. Für die Operatoren ++ und -- muss der Parameter vom selben Typ sein wie der Typ, in dem der Operator überladen wird.
Beispiel 1
Im folgenden Beispiel wird CS0559 generiert:
// CS0559.cs
// compile with: /target:library
public class iii
{
public static implicit operator int(iii x)
{
return 0;
}
public static implicit operator iii(int x)
{
return null;
}
public static int operator ++(int aa) // CS0559
// try the following line instead
// public static iii operator ++(iii aa)
{
return (iii)0;
}
}
Beispiel 2
Im folgenden Beispiel wird CS0559 generiert.
// CS0559_b.cs
// compile with: /target:library
public struct S
{
public static S operator ++(S? s) { return new S(); } // CS0559
public static S operator --(S? s) { return new S(); } // CS0559
}
public struct T
{
// OK
public static T operator --(T t) { return new T(); }
public static T operator ++(T t) { return new T(); }
public static T? operator --(T? t) { return new T(); }
public static T? operator ++(T? t) { return new T(); }
}
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.