System.Globalization.CultureTableRecord.GetCultureTableRecord C# (CSharp) Method

GetCultureTableRecord() static private method

static private GetCultureTableRecord ( string name, bool useUserOverride ) : CultureTableRecord
name string
useUserOverride bool
return CultureTableRecord
        internal static CultureTableRecord GetCultureTableRecord(string name, bool useUserOverride)
        {
            BCLDebug.Assert(name != null, "[CultureTableRecord::GetCultureTableRecord] name should be valid.");
        
            // Make sure the cache is valid.
            if (CultureTableRecordCache == null)
            {
                if (name.Length == 0) // Invariant culture
                {
                    // First time Invariant culture get created we ignore creating the cache
                    return new CultureTableRecord(name, useUserOverride);
                }
                
                lock (InternalSyncObject)
                {
                    if (CultureTableRecordCache == null)
                        CultureTableRecordCache = new Hashtable();
                }
            }

            name = ValidateCulturePieceToLower(name, "name", MAXSIZE_FULLTAGNAME);

            CultureTableRecord [] cultureRecordArray = (CultureTableRecord []) CultureTableRecordCache[name];
            if (cultureRecordArray != null)
            {
                int index   = useUserOverride ? 0 : 1;

                if (cultureRecordArray[index] == null)
                {
                    int filled  = index == 0 ? 1 : 0;
                    cultureRecordArray[index] = (CultureTableRecord) cultureRecordArray[filled].CloneWithUserOverride(useUserOverride);
                }

                return cultureRecordArray[index];
            }

            CultureTableRecord cultureRecord = new CultureTableRecord(name, useUserOverride);
            lock (InternalSyncObject)
            {
                if (CultureTableRecordCache[name] == null)
                {
                    cultureRecordArray = new CultureTableRecord[2];
                    cultureRecordArray[useUserOverride ? 0 : 1] = cultureRecord;
                    CultureTableRecordCache[name] = cultureRecordArray;
                }
            }

            return cultureRecord;
        }

Same methods

CultureTableRecord::GetCultureTableRecord ( int cultureId, bool useUserOverride ) : CultureTableRecord