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


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

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

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

Объект и выражения, инициализирующие коллекцию, не могут быть применены к выражению создания делегата
Object and collection initializer expressions may not be applied to a delegate creation expression,

Делегат, в отличие от класса или структуры, не имеет членов. Поэтому инициализатору объектов нечего инициализировать в делегате. Наиболее вероятной причиной появления этой ошибки является наличие фигурных скобок после выражения создания делегата. Удалите фигурные скобки, и ошибка исчезнет.

Исправление ошибки

  • Удалите фигурные скобки.

Пример

В следующем коде создается ошибка CS1922:

// cs1958.cs
public class MemberInitializerTest
{   
    delegate void D<T>();
    public static void GenericMethod<T>() { }
    public static void Run()
    {
        D<int> genD = new D<int>(GenericMethod<int>) { }; // CS1958
       // Try the following line instead
      // D<int> genD = new D<int>(GenericMethod<int>);
    }
}