3

我想问一下Convert.ToDoubleDouble.Parse在C#中
写这段代码的时候,没关系

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'
如何解决这个问题?

4

2 回答 2

12

double是一个不能是的值类型null

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

Convert.ToDouble将尝试获取不匹配的字符串并找到合适的值。因为null那将是0.0

要检查一个字符串是否可以直接解析,请尝试使用double.TryParse适当的重载。

例如:

double red;
Console.Write("Red = ");
var input = Console.ReadLine();

if(!double.TryParse(input, out red))
{
    Console.WriteLine("You have not entered an appropriate value!");
}

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

于 2013-07-05T13:02:13.873 回答
4

Convert.ToDouble是实用方法。

Convert.ToDouble文档解释:

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

Double.ParseArgumentNullException如果你传递 null会抛出,因为Double不能用null. 在这里解释:http: //msdn.microsoft.com/en-us/library/fd84bdyt.aspx

于 2013-07-05T13:05:07.227 回答