Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的奇怪行为:解析字符串以使错误加倍_C#_Type Conversion_String Conversion - Fatal编程技术网

C#中的奇怪行为:解析字符串以使错误加倍

C#中的奇怪行为:解析字符串以使错误加倍,c#,type-conversion,string-conversion,C#,Type Conversion,String Conversion,更新: 这里有一个链接指向一个在be失败的项目,即使它在VS 2015 CE.NET 4.6中明显是一个双倍。 好的,我知道如何复制它。当它在代码的显式运算符块上中断时,您只需直接从调试中复制字符串并将其粘贴到“a”中,即使它看起来像普通字符串,它也会中断 double a = double.Parse("1"); double b = double.Parse("1"); 原件: 为什么“a”可以工作,但“b”抛出异常:“输入字符串的格式不正确。” 同样的异常也发生在下面的场景中 Numb

更新:

这里有一个链接指向一个在be失败的项目,即使它在VS 2015 CE.NET 4.6中明显是一个双倍。

好的,我知道如何复制它。当它在代码的显式运算符块上中断时,您只需直接从调试中复制字符串并将其粘贴到“a”中,即使它看起来像普通字符串,它也会中断

double a = double.Parse("1");
double b = double.Parse("1");
原件:

为什么“a”可以工作,但“b”抛出异常:“输入字符串的格式不正确。”

同样的异常也发生在下面的场景中

Number n = (Number)"‎1";
Number是我创建的自定义数据类型(struct)。它无法将字符串解析为double

public static explicit operator Number(string n)
{
        double x = double.Parse(n);
        return new Number(x);
}
更奇怪的是,我将结构复制到了一个新项目中,以复制错误。但是在具有相同结构的原始项目中,它不会引发异常

Euler's constant,0.577215664901532860606512,none
我从一个文本文件中加载常量,并将它们转换成数字。这些常数起作用:

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”,但并非总是如此。。。这真的很让人困惑,这就是为什么我做了一个新项目,但由于某些原因,它在新项目中的表现不同


我在所有项目中都使用.NET4.6。我最初使用的是5.4.2,但对其进行了更改。两个版本中的问题似乎相同。

这是隐藏字符的常见复制/粘贴问题

在代码中,b的“1”长度为2个字符

第一个字符是unicode 8206,而第二个字符是49,即1


做一些清理,它应该会工作

第一个代码段运行时没有问题,()所以OP一定在跟踪我们。拒绝再看下去。是什么让你认为你制作的自定义结构能够投射字符串?@LukePark没关系,因为他为此定义了一个运算符。@MikeNakis啊,我读得不够深入。。发生了一些非常奇怪的事情。如果“b”中的字符串不显示在VS中,是否可能会有所不同?如果我复制“a”并将其置于“b”之上,然后将其改为“var”和“b”,则它可以工作。我要看看我是否可以压缩它并上传它,并且仍然可以得到行为。谢谢。所以现在只是操作员代码块表现得很奇怪。我想在代码块之外测试它,看看它是否有不同的行为,但在故障排除过程中的某个地方,我从调试中复制/粘贴了它,这时事情开始变得混乱。我假设最初的问题不同,但似乎是同一个问题。我将常数复制粘贴到记事本中,保存下来,收到一条消息,说它是unicode,我会丢失信息,然后关闭它,打开它,发现这个:gamma,?0.577215664901532860606512,无