我想问一下C#中的Convert.ToDouble
和Double.Parse
当我写这段代码时,没关系
static void Main(string[] args)
{
double red;
Console.Write("Red = ");
red = Convert.ToDouble(Console.ReadLine());
}
但如果我尝试
static void Main(string[] args)
{
double red;
Console.Write("Red = ");
red = Double.Parse(Console.ReadLine());
}
我从ReSharper 'Possible 'null' assignment to entity marked with 'NotNull' attribute'
获得警告
如何解决?
答案 0 :(得分:12)
double
是value type,不能是null
。
double.Parse
会尝试将string
解析为double
。它不会试图强制不匹配的值,例如null
。
Convert.ToDouble
会尝试获取不匹配的字符串并找到合适的值。适用于null
的{{1}}。
要检查sting是否可以直接解析,请尝试使用double.TryParse
并使用适当的重载。
例如:
0.0
这会尝试使用当前Culture和默认NumberStyles解析双精度。
答案 1 :(得分:4)
Convert.ToDouble
是实用方法。
Convert.ToDouble
文档说明:
如果传递null,返回值类型:System.Double双精度浮点数 等于value的数字,如果value为null,则为零。
Double.Parse
将抛出ArgumentNullException
,因为Double
无法使用null
构建。在此解释:http://msdn.microsoft.com/en-us/library/fd84bdyt.aspx