valores valor tipo tener solo que puede objeto nulo lectura implícitamente debe convertir bool acepta c# nullable

tipo - c#¿Por qué no se puede asignar un int nullable nulo como un valor



nullable c# (4)

Del mismo modo lo hice por mucho tiempo:

myLongVariable = (!string.IsNullOrEmpty(cbLong.SelectedItem.Value)) ? Convert.ToInt64(cbLong.SelectedItem.Value) : (long?)null;

Explica por qué un int nullable no puede ser asignado al valor de nulo, por ej.

int? accom = (accomStr == "noval" ? null : Convert.ToInt32(accomStr));

¿Qué pasa con ese código?


El problema no es que null no se pueda asignar a un int ?. El problema es que ambos valores devueltos por el operador ternario deben ser del mismo tipo, o uno debe ser implícitamente convertible al otro. En este caso, null no se puede convertir implícitamente en int ni vice-versus, por lo que se necesita un lanzamiento explícito. Pruebe esto en su lugar:

int? accom = (accomStr == "noval" ? (int?)null : Convert.ToInt32(accomStr));


Lo que Harry S dice es exactamente correcto, pero

int? accom = (accomStr == "noval" ? null : (int?)Convert.ToInt32(accomStr));

también haría el truco. (Los usuarios de Resharper siempre podemos vernos entre las multitudes ...)


Otra opción es usar

int? accom = (accomStr == "noval" ? Convert.DBNull : Convert.ToInt32(accomStr);

Me gusta más esta.