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

This C# program calculates and displays an upper triangular matrix based on user input. Problem Statement: The program takes the...
This C# program serves as a demonstration of bitwise operators, which are fundamental operators used for manipulating individual bits in...
This C# program is designed to interchange or swap the columns of a matrix. A matrix is a two-dimensional array...