How can I convert decimal? to decimal
There's plenty of options...
decimal? x = ...
decimal a = (decimal)x; // works; throws if x was null
decimal b = x ?? 123M; // works; defaults to 123M if x was null
decimal c = x.Value; // works; throws if x was null
decimal d = x.GetValueOrDefault(); // works; defaults to 0M if x was null
decimal e = x.GetValueOrDefault(123M); // works; defaults to 123M if x was null
object o = x; // this is not the ideal usage!
decimal f = (decimal)o; // works; throws if x was null; boxes otherwise
Try using the ??
operator:
decimal? value=12;
decimal value2=value??0;
0 is the value you want when the decimal?
is null.
You don't need to convert a nullable type to obtain its value.
You simply take advantage of the HasValue
and Value
properties exposed by Nullable<T>
.
For example:
Decimal? largeValue = 5830.25M;
if (largeValue.HasValue)
{
Console.WriteLine("The value of largeNumber is {0:C}.", largeValue.Value);
}
else
{
Console.WriteLine("The value of largeNumber is not defined.");
}
Alternatively, you can use the null coalescing operator in C# 2.0 or later as a shortcut.
It depends what you want to do if the decimal?
is null
, since a decimal
can't be null
. If you want to default that to 0, you can use this code (using the null coalescing operator):
decimal? nullabledecimal = 12;
decimal myDecimal = nullabledecimal ?? 0;