B. *_*non 0 .net c# null decimal
我有这段代码旨在将空十进制值转换为“零”值:
decimal paymentTot = TryConvertToDecimal(boxPaymentAmount.Text);
if ((null == paymentTot) || (paymentTot < 0))
{
paymentTot = 0M; // or simply 0?
}
private decimal TryConvertToDecimal(String incoming)
{
decimal result = 0.0M;
try
{
result = Convert.ToDecimal(incoming);
}
catch
{
; // nada
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
它可以编译,但我收到此警告:“表达式的结果始终为“假”,因为“十进制”类型的值永远不等于“十进制”类型的“空”?”
我不明白它想告诉我什么。我需要什么样的测试来安抚警告发射器,更重要的是,确保我的代码在意图时可以等同于“true”?
decimal是一个值类型并且不能为空。
如果您想要一个可为空的小数,则使用Nullable<decimal>or ,decimal?它是类型的包装器(尽管它仍然是值类型)。decimal
您还可以将解析方法设置为:
private Nullable<decimal> TryConvertToDecimal(String incoming)
{
Nullable<decimal> returnValue = null;
decimal result;
if (decimal.TryParse(incoming, out result))
{
returnValue = result;
}
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
decimal.TryParse如果您要忽略解析中的异常,最好使用它。