2009-05-13 14 views

risposta

6

Sì, è possibile avere un elenco in struct ma non è possibile inizializzarlo con un inizializzatore di campo e invece è necessario utilizzare il costruttore.

struct MyStruct 
{ 
    public List<string> MyList; 
    public int MyInt; 

    public MyStruct(int myInt) 
    { 
     MyInt = myInt; 
     MyList = new List<string>(); 
    } 
} 
+1

Si noti inoltre che non è possibile avere un costruttore parametrico. –

+0

Non sono sicuro che cosa significhi – Crash893

+0

Il punto è ... una struttura NON deve fare riferimento a tipi mutabili (o raccolte di entità mutabili) – boctulus

1

struct può avere un costruttore ed è possibile creare un'istanza della lista nel costruttore.

1

Non sono un esperto di C# ma una struttura è solo un prototipo di come dovrebbe apparire la tua memoria. Dovrai dichiarare una variabile di struttura per poter fare "nuova lista()" e assegnarla a una variabile di lista.

qualcosa come struct test a; a.y = nuova lista();

Non ho mai programmato in C# quindi per favore converti la mia sintassi C in C#.

0

È possibile farlo: dichiarare un costruttore per la struct e creare un'istanza di elenco nel costruttore struct. Non puoi utilizzare un inizializzatore come hai proposto nel tuo snippet di codice.

+0

"Elenco privato y = nuovo Elenco ();" mi dà "errore CS0573:' test.y ': le strutture non possono avere inizializzatori di campi di istanza "Naturalmente potrebbe essere fatto con una classe ... –

+0

Yeap, l'ho provato allo stesso tempo e ho aggiornato la risposta. – sharptooth

Problemi correlati