我有以下课程:
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
都是按值传递而不是引用?