这里是一个失败的是即使是在明确2015年VS CE .NET 4.6双项目的链接。 https://dl.dropboxusercontent.com/u/20941617/Scratchpad.zip
好吧我知道如何复制它。当它在明确的操作符代码块中断时,您只需将该字符串从调试中直接复制并粘贴到'a'中,即使它看起来像普通字符串,它也会中断。
double a = double.Parse("1");
double b = double.Parse("1");
原文:
为什么 'A' 的工作,但 'B' 抛出一个异常: “输入字符串的不正确的格式。”?
double a = double.Parse("1");
var b = double.Parse("1");
下面的情况也会发生同样的异常。
Number n = (Number)"1";
Number是我自定义的数据类型(结构)。它无法将字符串解析为双精度。
public static explicit operator Number(string n)
{
double x = double.Parse(n);
return new Number(x);
}
更奇怪的是,我将我的结构复制到了一个我为复制错误而创建的新项目中。但是...在具有相同结构的原始项目中,它不会抛出异常。
我从文本文件加载常量并将它们转换为数字就好了。这些常量的工作:
pi,3.14159265358979323846,none
π,3.14159265358979323846,none
golden ratio,1.61803398874989484820,none
phi,1.61803398874989484820,none
φ,1.61803398874989484820,none
但是,当它达到这个常数,它会引发同样的异常。
Euler's constant,0.577215664901532860606512,none
它还抛出它的“0.1”,但不是所有的时间......这真的很令人困惑,这就是为什么我做了一个新的项目,但由于某些原因,新项目的行为不同。
我在所有项目中都使用.NET 4.6。我最初使用5.4.2,但改变了它。这两个版本的问题似乎都是一样的。
第一代码片段运行没有问题,(http://ideone.com/172M50),因此OP必须曳我们。拒绝再看。 –
是什么让你认为你制作的自定义结构能够投射字符串? –
@LukePark没关系,因为他为此定义了一个操作符。 –