double.TryParse越野车?

Deb*_*Deb -4 c# visual-studio-2010

看起来我的VS2010表现得很奇怪(或者可能只是我)!

以下论点中的内容是什么?

在此输入图像描述

我是唯一一个收到此错误的人吗?

Ste*_*eve 6

您需要传递一个实际的double来存储结果.TryParse方法将第二个参数声明为out double,意味着它打算在那里存储一些东西.

get
{
    double d;
    double.TryParse(lat1.Text, out d);
    return d;
}
Run Code Online (Sandbox Code Playgroud)

具有讽刺意味的是,这种行为可以被认为是"越野车".
在光秃秃的裸体C的古代,这样的错误可以消灭你的硬盘.


Geo*_*ell 6

你误会了什么TryParse.如果您确定lati.Text是有效的双倍,请使用double.Parse(lati.Text).它需要一个字符串并返回一个double.你的吸气器看起来像:

get { return double.Parse(lat1.Text); }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果lat1.Text不是有效的double,它将抛出异常并中断.如果这不是您想要的行为,您应该使用double.TryParse哪个回放bool(如果成功解析文本则为true,否则为false).第二个参数TryParse必须是一个持有者变量 - 在TryParse完成之后 - 将保存您之后的解析值.使用这种方法,您的代码将如下所示:

get
{
    double lat;
    if (double.TryParse(lat1.Text, out lat))
        return lat;
    else
    {
        // This line is reached if lat1.Text is not a valid double.
        // You decide what's best to do here
        return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)