Будет возвращено false
, если текущая культура задает разделитель десятичной точки, отличный от символа .
.
При разборе представления строк вам необходимо знать, в какой культуре они представлены иначевы получите неожиданное поведение.
В этом случае вы получаете false
, но это может быть даже хуже, например, в следующем примере, если вы ожидаете получить номер один, который вы получите вместоодна тысяча:
Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-PT");
double d;
Console.WriteLine(double.TryParse("1.000", out d));
Console.WriteLine(d);
Это потому, что в культуре pt-PT
символ .
используется как NumberGroupSeparator
, а символ ,
используется как NumberDecimalSeparator
.
Если анализируемый вами ввод поступает от пользователя, то всегда анализируйте его с использованием культуры, с которой связан пользователь.Получение культуры, с которой связан пользователь, зависит от контекста, например, в приложении Windows Forms вы должны использовать Thread.CurrentThread.CurrentCulture
в потоке пользовательского интерфейса, чтобы получить его.В приложении ASP.NET это может отличаться.