Sdílet prostřednictvím


Compilerfehler CS1688

Aktualisiert: November 2007

Fehlermeldung

Ein anonymer Methodenblock ohne Parameterliste kann nicht in den Delegattyp "Delegat" konvertiert werden, da er mindestens einen out-Parameter aufweist.
Cannot convert anonymous method block without a parameter list to delegate type 'delegate' because it has one or more out parameters

Der Compiler ermöglicht es in den meisten Fällen, Parameter in einem anonymen Methodenblock zu unterdrücken. Dieser Fehler tritt auf, wenn der anonyme Methodenblock keine Parameterliste enthält, der Delegat aber über einen out-Parameter verfügt. Der Compiler lässt diese Konstellation nicht zu, da das Vorhandensein des out-Parameters vom Compiler ignoriert werden müsste, was nicht dem ordnungsgemäßen Verhalten entspricht.

Beispiel

Der Fehler CS1688 wird durch folgenden Code generiert.

// 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("");
        };
    }
}