Pregunta

¿Si tengo un decimal anulable? d " y quiero asignar d a no anulable e, ¿cuál es la forma correcta?

¿Fue útil?

Solución

decimal e = d ?? 0.0;

Otros consejos

decimal e;
if(d.HasValue) 
{
    e = d.Value;
}

Debe determinar si incluso puede, es decir, si la n anulable tiene un valor o no.

if (d.HasValue) { e = d.Value; } else { /* now what */ }

Otro caso interesante surge con bastante frecuencia en el que desea asignar un valor anulable utilizando un ternario, en cuyo caso debe emitir para que ambas ramas tengan el mismo tipo.

d = foo ? 45 : (int?)null;

Tenga en cuenta el caso de nulo a (int?) para que ambas ramas tengan el mismo tipo.

decimal e;

if (d.HasValue)
{
    e = d.Value;
}

Normalmente voy con algo como esto:

decimal e = d.HasValue ? d.Value : decimal.Zero;

La razón aquí es que soy un fanático de las operaciones ternarias y generalmente asigno el valor que obtendría si hubiera realizado un TryParse () fallido para el tipo con el que estoy tratando. Para decimal que sería decimal.Zero , para int también sería 0 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top