Regex GetRegex(string pattern, FindOptions options) { lock (cachedRegexDictLock) { CachedRegex cachedRegex; int index = FindCachedRegexIndex_NoLock(pattern, options); if (index >= 0) { cachedRegex = cachedRegexes[index]; if (index + 1 != cachedRegexes.Count) { cachedRegexes.RemoveAt(index); cachedRegexes.Add(cachedRegex); } return(cachedRegex.Regex); } // Could throw if pattern is invalid cachedRegex = new CachedRegex(pattern, options); if (cachedRegexes.Count >= MAX_CACHED_REGEXES) { cachedRegexes.RemoveAt(0); } cachedRegexes.Add(cachedRegex); return(cachedRegex.Regex); } }
Regex GetRegex(string pattern, FindOptions options) { lock (cachedRegexDictLock) { CachedRegex cachedRegex; int index = FindCachedRegexIndex_NoLock(pattern, options); if (index >= 0) { cachedRegex = cachedRegexes[index]; if (index + 1 != cachedRegexes.Count) { cachedRegexes.RemoveAt(index); cachedRegexes.Add(cachedRegex); } return cachedRegex.Regex; } // Could throw if pattern is invalid cachedRegex = new CachedRegex(pattern, options); if (cachedRegexes.Count >= MAX_CACHED_REGEXES) cachedRegexes.RemoveAt(0); cachedRegexes.Add(cachedRegex); return cachedRegex.Regex; } }