Поделиться через


Ошибка компилятора CS1688

Обновлен: Ноябрь 2007

Сообщение об ошибке

Невозможно преобразовать блок анонимного метода без списка параметров в тип делегата "delegate", поскольку он имеет один или несколько выходных параметров
Cannot convert anonymous method block without a parameter list to delegate type 'delegate' because it has one or more out parameters

В большинстве случаев компилятор позволяет опускать параметры в блоке анонимного метода. Данная ошибка возникает при отсутствии списка параметров у блока анонимного метода и при наличии параметра out у делегата. Компилятор не допускает возникновение такой ситуации, поскольку игнорирование существующего параметра out наверняка вызовет появление ошибок.

Пример

В следующем примере возникает ошибка 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("");
        };
    }
}