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;
Esta pregunta ya tiene una respuesta aquí:
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.