Error del compilador CS1688

Actualización: noviembre 2007

Mensaje de error

No se puede convertir el bloque de método anónimo sin una lista de parámetros en el tipo delegado 'delegado' porque tiene uno o varios parámetros out.
Cannot convert anonymous method block without a parameter list to delegate type 'delegate' because it has one or more out parameters

El compilador permite omitir los parámetros de un bloque de método anónimo en la mayoría de los casos. Este error surge cuando el bloque de método anónimo no tiene una lista de parámetros, pero el delegado tiene un parámetro out. El compilador no permite esta situación porque necesitaría omitir la presencia del parámetro out, lo cual es improbable que sea el comportamiento correcto.

Ejemplo

En el código siguiente se genera el 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("");
        };
    }
}