Como sabe, no está permitido usar la sintaxis de inicialización de matriz con Listas. Le dará un error en tiempo de compilación. Ejemplo:List <int> test = {1, 2, 3} - ¿Es una característica o un error?
List<int> test = { 1, 2, 3}
// At compilation the following error is shown:
// Can only use array initializer expressions to assign to array types.
Sin embargo hoy hice lo siguiente (muy simplificada):
class Test
{
public List<int> Field;
}
List<Test> list = new List<Test>
{
new Test { Field = { 1, 2, 3 } }
};
El código anterior se compila bien, pero cuando se ejecuta dará un "objeto de referencias no se ajusta a un objeto " Error de tiempo de ejecución.
Supongo que ese código dará un error en tiempo de compilación. Mi pregunta para usted es: ¿por qué no lo hace, y hay alguna buena razón para cuando ese escenario se ejecutaría correctamente?
Esto ha sido probado usando .NET 3.5, ambos compiladores .Net y Mono.
Saludos.
El ejemplo más simple 'Test test = new Test {Field = {1, 2, 3}};' tiene el mismo comportamiento. – CodesInChaos
La "Referencia de objeto no está configurada en un objeto" es bastante lógica ya que su campo de Lista no está inicializado. Cambiar el cuerpo de la prueba a la lista pública Campo = new List (); hace que esto se ejecute sin ningún problema también. –
tome un reflector, y vea cómo el compilador lo trata, y lo entenderá. también mira cómo var stuff = new List() {4,5}; se ha manejado –