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


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

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

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

Для реализации интерфейса System.Collections.IEnumerable инициализатору коллекции требуется тип "тип".
Collection initializer requires its type 'type' to implement System.Collections.IEnumerable.

Чтобы использовать инициализатор коллекции с типом, этот тип должен реализовывать интерфейс IEnumerable. Эта ошибка может возникать, если для инициализатора объекта случайно используется синтаксис инициализатора коллекции.

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

  • Если тип не представляет коллекцию, то вместо синтаксиса инициализатора коллекции следует использовать синтаксис инициализатора объекта.

  • Если тип представляет коллекцию, измените его, чтобы прежде чем использовать инициализаторы коллекции для инициализации объектов этого типа, тип реализовал интерфейс IEnumerable.

  • Если тип представляет коллекцию, однако его исходный код недоступен, просто инициализируйте элементы этого типа с помощью конструкторов их класса или других методов инициализации.

Пример

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

// cs1922.cs
public class Test
{
    public static void Main()
    {
        // Collection initializer.
        var tc = new TestClass  {1,"hello"} ; // CS1922

        // Object initalizer.
        var tc2 = new TestClass { memberA = 1, memberB = "hello" }; // OK
    }
}

public class TestClass
{
    public int memberA { get; set; }
    public string memberB { get; set; }
}

См. также

Ссылки

Инициализаторы объектов и коллекций (Руководство по программированию в C#)