У меня есть пара сомнений относительно того, как числа и даты форматируются для других языков и региональных параметров c вещи, обрабатываемые точкой net.
Например, рассмотрите следующие два утверждения, написанные на английском языке sh культура.
Число и строка, представляющая дату, жестко запрограммированы, чтобы указать c английский язык sh язык и региональные параметры и проверка изменения языка и региональных параметров будут ли они преобразованы в специфицированные c культуры.
double double_number = 10.25;
// Converts correctly.
string double_number_string = double_number.ToString();
// Datetime format in English culture dddd, MMMM d, yyyy.
// Equilant turkey value is '30 Mayıs 2020 Cumartesi' with format 'd MMMM yyyy dddd'.
string date_string = "Saturday, May 30, 2020";
// No format specified. Converts correctly.
DateTime.TryParse("Saturday, May 30, 2020", out DateTime result);
// Converts correctly.
string double_number_string = double_number.ToString();
// Change culture to Turkey where both number and date formats are different.
Thread.CurrentThread.CurrentUICulture = new CultureInfo("tr-TR");
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("tr-TR");
// No format specified. Converts correctly.
DateTime.TryParse("Saturday, May 30, 2020", out DateTime result);
У меня установлена Visual Studio в версии Engli sh.
Допущение 1: Я думаю, Visual Studio ожидает, что код будет написан на языке Engli sh.
Допущение 2: После изменения культуры точка net все еще может преобразовываться правильно. Это будет возможно только тогда, когда сборка произойдет с культурой Invariant Language (Invariant Country)
. Это означает, что преобразование этих чисел и строк в язык Invariant Language (Invariant Country)
должно было произойти в сборке.
Допущение 3: Если допущение 2 неверно, тогда сборка должна иметь специфику культуры c информация с ним и точка net преобразует эти числа и строки и предоставит нам доступ к ним. Я считаю, что это было бы неправильным предположением, и предположение 2 верно.
Допущение 4: Преобразование числа в специфицированное c культуру понятно, потому что тип является целым числом. Но то, как точка net обрабатывает эту строку даты и преобразует ее в правильную дату в другой культуре через формат даты и времени в культуре индейки, отличается. Я ожидаю, что это выдаст ошибку. Из-за этого я не уверен, верно ли предположение 2 или предположение 3. Но я не думаю, что строки обрабатываются и конвертируются в Invariant Language (Invariant Country)
. Итак, не уверен, как здесь правильно конвертируется дата.
Допущение 5: Проверка числа всегда отображается в Invariant Language (Invariant Country)
или, возможно, в английской культуре sh, потому что Visual Studio находится в Engli sh культура. Я думаю, что inspect будет оценивать сборку, поэтому означает ли это, что inspect преобразуется в культуру Visual Studio.
Правильно ли какое-либо из моих предположений?
С уважением,
Нитин Б.