C#中的Convert.ToDouble和Double.Parse

时间:2013-07-05 12:59:20

标签: c# resharper

我想问一下C#中的Convert.ToDoubleDouble.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'获得警告 如何解决?

2 个答案:

答案 0 :(得分:12)

doublevalue type,不能是null

double.Parse会尝试将string解析为double。它不会试图强制不匹配的值,例如null

Convert.ToDouble会尝试获取不匹配的字符串并找到合适的值。适用于null的{​​{1}}。

要检查sting是否可以直接解析,请尝试使用double.TryParse并使用适当的重载。

例如:

0.0

这会尝试使用当前Culture和默认NumberStyles解析双精度。

答案 1 :(得分:4)

Convert.ToDouble是实用方法。

Convert.ToDouble文档说明:

  

返回值类型:System.Double双精度浮点数   等于value的数字,如果value为null,则为零。

如果传递null,

Double.Parse将抛出ArgumentNullException,因为Double无法使用null构建。在此解释:http://msdn.microsoft.com/en-us/library/fd84bdyt.aspx