C# Error
CS1688 – Cannot convert anonymous method block without a parameter list to delegate type ‘{0}’ because it has one or more out parameters
Reason for the Error & Solution
Cannot convert anonymous method block without a parameter list to delegate type ‘delegate’ because it has one or more out parameters
The compiler allows parameters to be omitted from an anonymous method block in most cases. This error arises when the anonymous method block does not have a parameter list, but the delegate has an out
parameter. The compiler does not allow this situation because it would need to ignore the presence of the out
parameter, which is unlikely to be the correct behavior.
Example
The following code generates error CS1688.
// CS1688.cs
using System;
delegate void OutParam(out int i);
class ErrorCS1676
{
static void Main()
{
OutParam o;
o = delegate // CS1688
// Try this instead:
// o = delegate(out int i)
{
Console.WriteLine("");
};
}
}