2012-06-27 1 views
1

Я тестировал это на обоих .Net 4.0 и .Net 4.0 CP, тот же результат.CultureInfo.Region работает в окне Immediate, а не в коде

Эта линия: global::System.Globalization.CultureInfo.GetCultureInfo("en-us").Region

Если я ввожу его в Visual Studio (C#), то Visual Studio говорит мне "Регион" не является действительным. Если я нахожу ту же строку в окне Immediate во время точки останова, она полностью действительна и возвращает данные, как ожидалось. И из того, что я вижу, «Регион» не находится в MSDN documentation.

Очевидно, что по разным причинам два разных объекта.
Почему? Что тут происходит? Почему реальность несовместима? Я боюсь!
(серьезно, я вижу поведение я не понимаю, так что я хотел бы, чтобы это понять.)

Непосредственные возвращается окно:

global::System.Globalization.CultureInfo.GetCultureInfo("en-us").Region 
{US} 
    CurrencyEnglishName: "US Dollar" 
    CurrencyNativeName: "US Dollar" 
    CurrencySymbol: "$" 
    DisplayName: "United States" 
    EnglishName: "United States" 
    GeoId: 244 
    IsMetric: false 
    ISOCurrencySymbol: "USD" 
    Name: "US" 
    NativeName: "United States" 
    ThreeLetterISORegionName: "USA" 
    ThreeLetterWindowsRegionName: "USA" 
    TwoLetterISORegionName: "US" 

В то время как Visual Studio идут все красные на меня: Visual Studio don't recognize CutlureInfo.Region

+0

Просто небольшая Sidenote: Я не только ищет другой/правильный способ сделать это, я хотел бы знать, почему Немедленное и код отличается. –

+0

Возможно, компилятор прав. Кажется, что окно Imm добавляет некоторые умения. –

ответ

2

Регион является непубличным достоянием класса CultureInfo. Кажется, что прямое окно имеет к нему доступ.

+0

Да, только что заметил в Reflector, что его определили как: 'private RegionInfo Region {get; } ' –

0

Текущий RegionInfo доступен с помощью

RegionInfo.CurrentRegion