Exemple #1
0
        internal CalendarData GetCalendar(int calendarId)
        {
            Contract.Assert(calendarId > 0 && calendarId <= CalendarData.MAX_CALENDARS,
                "[CultureData.GetCalendar] Expect calendarId to be in a valid range");

            // arrays are 0 based, calendarIds are 1 based
            int calendarIndex = calendarId - 1;

            // Have to have calendars
            if (calendars == null)
            {
                calendars = new CalendarData[CalendarData.MAX_CALENDARS];
            }

            // we need the following local variable to avoid returning null
            // when another thread creates a new array of CalendarData (above)
            // right after we insert the newly created CalendarData (below)
            CalendarData calendarData = calendars[calendarIndex];
            // Make sure that calendar has data
            if (calendarData == null || UseUserOverride)
            {
                Contract.Assert(this.sWindowsName != null, "[CultureData.GetCalendar] Expected this.sWindowsName to be populated by COMNlsInfo::nativeInitCultureData already");
                calendarData = new CalendarData(this.sWindowsName, calendarId, this.UseUserOverride);
#if !FEATURE_CORECLR
                //Work around issue where Win7 data for MonthDay contains invalid two sets of data separated by semicolon
                //even though MonthDay is not enumerated
                if (IsOsWin7OrPrior() && !IsSupplementalCustomCulture && !IsReplacementCulture)
                {
                    calendarData.FixupWin7MonthDaySemicolonBug();
                }
#endif
                calendars[calendarIndex] = calendarData;
            }

            return calendarData;
        }
 internal CalendarData GetCalendar(int calendarId)
 {
     int index = calendarId - 1;
     if (this.calendars == null)
     {
         this.calendars = new CalendarData[0x17];
     }
     CalendarData data = this.calendars[index];
     if ((data == null) || this.UseUserOverride)
     {
         data = new CalendarData(this.sWindowsName, calendarId, this.UseUserOverride);
         if ((IsOsWin7OrPrior() && !this.IsUserCustomCulture) && !this.IsReplacementCulture)
         {
             data.FixupWin7MonthDaySemicolonBug();
         }
         this.calendars[index] = data;
     }
     return data;
 }