Errore del compilatore CS1688

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile convertire il blocco del metodo anonimo senza un elenco di parametri nel tipo di delegato 'delegato'. Quest'ultimo dispone di uno o più parametri out.
Cannot convert anonymous method block without a parameter list to delegate type 'delegate' because it has one or more out parameters

Nella maggior parte dei casi, il compilatore consente l'omissione di parametri da un blocco del metodo anonimo. Questo errore viene visualizzato quando per il blocco del metodo anonimo non è presente un elenco di parametri, mentre per il delegato è disponibile un parametro out. Questa situazione non è consentita perché sarebbe necessario ignorare la presenza del parametro out, generando un comportamento non corretto.

Esempio

Il seguente codice di esempio genera l'errore 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("");
        };
    }
}