C# Error CS1678 – Parameter {0} is declared as type ‘{1}{2}’ but should be ‘{3}{4}’

C# Error

CS1678 – Parameter {0} is declared as type ‘{1}{2}’ but should be ‘{3}{4}’

Reason for the Error & Solution

Parameter ‘number’ is declared as type ‘type1’ but should be ‘type2’

This error occurs when the parameter type in an anonymous method is different from the declaration of the delegate you are casting the method to.

The following sample generates CS1678:

// CS1678  
delegate void D(int i);  
class Errors
{  
   static void Main()
   {  
      D d = delegate(string s) { };   // CS1678  
      // To resolve, use the following line instead:  
      // D d = delegate(int s) { };  
   }  
}