繁体   English   中英

C#中的Convert.ToDouble和Double.Parse

[英]Convert.ToDouble and Double.Parse in C#

我想问一下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'感到谨慎
如何解决?

double是一个不能为null值类型

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

Convert.ToDouble将尝试获取不匹配的字符串并找到合适的值。 对于null0.0

要检查sting是否可以直接解析,请尝试使用带有适当重载的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解析double。

Convert.ToDouble是实用方法。

Convert.ToDouble文档说明:

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

如果传递null, Double.Parse将抛出ArgumentNullException ,因为Double不能用null构造。 这里解释: http//msdn.microsoft.com/en-us/library/fd84bdyt.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM