为什么double.Parse调用成功会受Console.WriteLine或延迟影响?

时间:2017-03-19 18:29:31

标签: c# .net-core

我有以下课程:

public class Point {

    public Point(string latitude, string longitude)
    {
        Longitude = double.Parse(longitude.ToString());
        Latitude = double.Parse(latitude.ToString());
    }

    public double Longitude { get; set; }

    public double Latitude { get; set; }
}

我在一个循环中调用它,从ASCII编码文件中读取数据。

在上面的表单中,对于循环的每次迭代,在使用

实例化类的实例时
var p = new Geocode.Point(string1, string2);

构造函数失败,出现以下异常

System.FormatException: Input string was not in a correct format.
    at System.Number.ParseDouble(String value, NumberStyles options,
       NumberFormatInfo numfmt)
    at System.Double.Parse(String s)

但是,如果我将Point的构造函数更改为以下内容:

public Point(string latitude, string longitude)
    {
        Console.WriteLine("Latitude: " + latitude);
        Console.WriteLine("Longitude: " + longitude);
        Longitude = double.Parse(longitude.ToString());
        Latitude = double.Parse(latitude.ToString());
    }

并运行循环,double.Parse成功。

添加Thread.Sleep(100);代替Console.WriteLine调用同样可以确保循环运行没有问题,所以很明显这里有一个计时问题,但为什么在这个特定的实例中会有{{1在两种情况下,}和string1都是按值传递而不是引用?

0 个答案:

没有答案