Errore del compilatore CS1922

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile inizializzare il tipo 'tipo' con un inizializzatore di insieme perché non implementa System.Collections.IEnumerable.
Collection initializer requires its type 'type' to implement System.Collections.IEnumerable.

Per utilizzare un inizializzatore di insieme con un tipo, questo deve implementare IEnumerable. Questo errore può verificarsi se si utilizza accidentalmente la sintassi dell'inizializzatore di insieme quando si intende utilizzare un inizializzatore di oggetto.

Per correggere l'errore

  • Se il tipo non rappresenta un insieme, utilizzare la sintassi dell'inizializzatore di oggetto anziché la sintassi dell'inizializzatore di insieme.

  • Se il tipo rappresenta un insieme, modificarlo per implementare IEnumerable prima che sia possibile utilizzare inizializzatori di insieme per inizializzare oggetti di quel tipo.

  • Se il tipo rappresenta un insieme e non si ha accesso al codice sorgente, inizializzare solo gli elementi utilizzando i costruttori di classe o altri metodi di inizializzazione.

Esempio

Nel codice seguente viene riprodotto l'errore 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; }
}

Vedere anche

Riferimenti

Inizializzatori di oggetto e di insieme (Guida per programmatori C#)