コード例 #1
0
 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);
     }
 }
コード例 #2
0
ファイル: TextSearchService.cs プロジェクト: 0xd4d/dnSpy
		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;
			}
		}