C# Error CS0559 – The parameter type for ++ or — operator must be the containing type

C# Error

CS0559 – The parameter type for ++ or — operator must be the containing type

Reason for the Error & Solution

The parameter type for ++ or — operator must be the containing type

The method declaration for an operator overload must follow certain guidelines. For the ++ and — operators, it is required that the parameter be of the same type as the type in which the operator is being overloaded.

Example 1

The following sample generates CS0559:

// 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;  
   }  
}  

Example 2

The following sample generates CS0559.

// 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(); }  
}  

Leave A Reply

Your email address will not be published. Required fields are marked *

You May Also Like

C# Compiler Error CS0442 – ‘Property’: abstract properties cannot have private accessors Reason for the Error You’ll get this error...
This is a really simple one . Below is a simple example of an enum called “Designation” defined with the...
This blog post explain the usage of the Checked Block in .NET and how you can use them in Visual...