Pregunta No se encuentra el mejor tipo para matriz implícitamente tipada


¿Alguien puede explicarme por qué este código?

var marketValueData = new[] {
    new { A = "" },
    new { A = "" },
    new { B = "" },
};

Me está dando el error:

No se encuentra el mejor tipo para matriz implícitamente tipada

mientras que este funciona perfectamente bien:

var marketValueData = new[] {
    new { A = "" },
    new { A = "" },
    new { A = "" },
};

Aparte de una propiedad diferente (B en la última entrada del primer ejemplo), son lo mismo. Sin embargo, el primero no está compilando. ¿Por qué?


17
2017-10-23 07:23


origen


Respuestas:


Es porque tiene dos tipos anónimos diferentes en el primer ejemplo, la definición del último elemento es diferente a los demás.

En el primer ejemplo, uno que contiene un A propiedad y uno que contiene un B propiedad, y el compilador no puede determinar el tipo de matriz. En el segundo ejemplo, hay un tipo anónimo, que contiene solo A.

Creo que es un error de tipografíapara que puedas cambiar B a A en la última entrada en el primer ejemplo

De MSDN:

Puede crear una matriz implícitamente tipada en la que el tipo de   la instancia de matriz se deduce de los elementos especificados en la matriz   inicializador.


28
2017-10-23 07:25



Puedes usar:

var marketValueData = new object[] {
    new { A = "" },
    new { A = "" },
    new { B = "" },
    ...,
};

15
2017-12-19 08:38



Los tipos anónimos deben ser iguales. Solo cambia B a A.


6
2017-10-23 07:29