Ошибка компилятора 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>);
}
}