[英]Use double.Parse that if Null value, then value replace with 0
我正在尝试将字符串转换为double。 如果遇到空值,则该值应为0(零)。 但是,它会出现一条错误消息:
“接线员'??' 不能应用于'double'和'double'类型的操作数。这有点令人困惑,因为两个数字都是双倍的?我该怎么解决这个问题?
double final = double.Parse(min.ToString()) ?? 0.0;
也许这个,假设min
是一个string
:
double final = double.Parse(min ?? "0");
也许:
double final = (min == null) ? 0 : double.Parse(min);
编辑
更好的是:
double final = Convert.ToDouble(min);
根据文档 ,该方法将返回
双精度浮点数,等于值中的数字, 如果value为null,则为0(零) 。
出现此错误是因为左侧? 必须是Nullable类型,可以将null作为值。
在你的代码中:
double final = double.Parse(min.ToString()) ?? 0.0;
你在用??
调用Null-coalescing运算符的运算符以及此运算符执行的操作是检查double.Parse(min.ToString())
__evaluates值是否为double
类型(值为类型)_是否为null。 如果它不为null,则将值赋给final
,否则为其赋值0.0
。
由于double
是值类型而值类型变量不能为null,除非它们是Nullable ,您将收到错误,这就是您收到此错误的原因:
“接线员'??' 不能应用于'double'和'double'类型的操作数。“
要解决此问题,您可以尝试这样做:
double final = Convert.ToDouble(min);
如果min
为null,则返回零。
PS:尽量避免使用Parse
方法,当它无法解析时抛出System.FormatExceptoin
,改为使用TryParse
:
string min = "2.s"; // not a number
double finals;
bool successed = double.TryParse(min, out finals); // true if successed, otherwise false.
Console.WriteLine(successed? $"Yes! finals = {finals}": $"No :( finals = {finals}");
// finals is 0 if the parse didn't work.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.