该代码在VS2008中针对.NET3.5进行编译。这在我的系统上是不可复制的。我怀疑正在进行某种本地化设置,但是对此我不太了解。

所有其他有效数字似乎都可以正常工作。该错误用以下代码说明(导致相同的异常,但不是生产代码):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "";
            do
            {
                str = Console.ReadLine();
                Console.WriteLine("\t\"{0}\"", Convert.ToDouble(str));
            }
            while (str != null);
        }
    }
}

在命令行中,输入“0”会使我遇到的至少一个系统上的应用程序崩溃。

来自用户PC的堆栈跟踪:
System.FormatException: Input string was not in a correct format.
   at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.Double.Parse(String s, NumberStyles style, NumberFormatInfo info)
   at System.Convert.ToDouble(String value)

最佳答案

我记得不久前有一个问题。 Parse()方法受“控制面板+区域和语言”小程序中用户覆盖的影响。 IIRC,它对“负号符号”设置特别敏感。要求您的用户在此更正设置。

参考问题is here

08-18 18:50