可能是一个简单的问题,但我尝试了所有的转换方法!它仍然有错误! 你能帮帮我吗?
小数? (可以为十进制)到十进制
答案 0 :(得分:95)
有很多选择......
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
答案 1 :(得分:25)
尝试使用??
运算符:
decimal? value=12;
decimal value2=value??0;
0是decimal?
为空时所需的值。
答案 2 :(得分:10)
您无需转换可空类型以获取其值。
您只需利用Nullable<T>
公开的HasValue
和Value
属性。
例如:
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.");
}
或者,您可以使用C#2.0或更高版本中的null coalescing operator作为快捷方式。
答案 3 :(得分:3)
如果decimal?
为null
,则取决于您要执行的操作,因为decimal
不能为null
。如果要将其默认为0,则可以使用此代码(使用 null合并运算符):
decimal? nullabledecimal = 12;
decimal myDecimal = nullabledecimal ?? 0;
答案 4 :(得分:-2)
你可以使用。
decimal? v = 2;
decimal v2 = Convert.ToDecimal(v);
如果值为null(v),则将其转换为0.