Это поведение встроено в отладчик, в конкретном случае, когда он отлаживает программу, написанную на VB.NET. Видно с появлением #
на скриншоте. Ничего страшного, отладчик во многих случаях старается сделать вывод таким же, как вы написали бы его в программе. Возьмем, например, C #, строка, которая содержит встроенные двойные кавычки, будет отображаться с обратной косой чертой перед ними. На самом деле не присутствует в строке, но необходимо при объявлении такого строкового литерала в исходном коде.
Таким образом, правила языка VB.NET применяются к формату литеральной строки, которую вы видите. Описанный в главе 2.4.6 Спецификации языка, он не чувствителен к культуре. Это, конечно, не может быть, ваш исходный код не будет производить другую программу, когда ваш коллега в Китае скомпилирует ее. Я просто скопирую / вставлю правила производства:
DateLiteral ::= # [ Whitespace+ ] DateOrTime [ Whitespace+ ] #
DateOrTime ::=
DateValue Whitespace+ TimeValue |
DateValue |
TimeValue
DateValue ::=
MonthValue / DayValue / YearValue |
MonthValue – DayValue - YearValue
TimeValue ::=
HourValue : MinuteValue [ : SecondValue ] [ WhiteSpace+ ] [ AMPM ] |
HourValue [ WhiteSpace+ ] AMPM
MonthValue ::= IntLiteral
DayValue ::= IntLiteral
YearValue ::= IntLiteral
HourValue ::= IntLiteral
MinuteValue ::= IntLiteral
SecondValue ::= IntLiteral
AMPM ::= AM | PM
Так что это всегда месяц / день / год. Если вам нужно увидеть, как он выглядит при преобразовании его в строку, вам нужно использовать соответствующее преобразование строки в вашем выражении наблюдения. Как и CStr(Date.Now)
и так далее, имейте в виду, что есть много способов сделать это, поскольку DateTime.ToString () может принимать символы форматирования.