Как код dot net обрабатывается в различных средах, таких как Visual Studio, Visual Studio Debug, Build, Runtime? - PullRequest
0 голосов
/ 30 мая 2020

У меня есть пара сомнений относительно того, как числа и даты форматируются для других языков и региональных параметров 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.

Правильно ли какое-либо из моих предположений?

С уважением,

Нитин Б.

...