2009-05-13 17 views

Respuesta

6

Sí, puede tener una lista en struct pero no puede inicializarla con un inicializador de campo y en su lugar debe usar el constructor.

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

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

También tenga en cuenta que no puede tener un constructor sin parámetros. –

+0

No estoy seguro de lo que eso significa – Crash893

+0

El punto es ... una estructura NO debe hacer referencia a los tipos mutables (o colecciones de entidades mutables) – boctulus

1

estructura puede tener un constructor y se puede crear una instancia de la lista en el constructor.

1

No soy un experto en C# pero una estructura es solo un prototipo de cómo se vería tu memoria. Deberá declarar una variable de estructura para poder hacer "new list()" y asignarla a una variable de lista.

algo así como struct test a; a.y = nueva lista();

Nunca he programado en C# así que convierta mi sintaxis de C a C#.

0

Puede hacer eso: declarar un constructor para la estructura y crear una instancia de lista en el constructor de la estructura. No puede usar un inicializador como lo propuso en su fragmento de código.

+0

"private List y = new Lista ();" me da "error CS0573:' test.y ': las estructuras no pueden tener inicializadores de campo de instancia "Por supuesto que se podía hacer con una clase ... –

+0

Yeap, lo probé al mismo tiempo y actualicé la respuesta. – sharptooth

Cuestiones relacionadas