Если Вам когда-либо любопытно на предмет различий в методах BCL, , Отражатель является Вашим другом :-)
я следую этим инструкциям:
Точное совпадение: РЕДАКТИРОВАНИЕ: Я ранее всегда использовал == оператор на принципе, который внутри Равняется (строка, строка) объекту ==, оператор используется для сравнения ссылок на объект, но кажется, что strA.Equals (strB) все еще на 1-11% быстрее в целом, чем строка. Равняется (Стра, strB), Стра == strB, и строка. CompareOrdinal (Стра, strB). Я циклично выполняюсь протестированный с StopWatch и на строковых значениях interned/non-interned с теми же/отличающимися длинами строки, и на переменных размерах (1B к 5 МБ).
strA.Equals(strB)
Человекочитаемое соответствие (Западные культуры, нечувствительные к регистру):
string.Compare(strA, strB, StringComparison.OrdinalIgnoreCase) == 0
Человекочитаемое соответствие (Все другие культуры, нечувствительный случай/диакритический знак/кана/и т.д., определенный CultureInfo):
string.Compare(strA, strB, myCultureInfo) == 0
Человекочитаемое соответствие с пользовательскими правилами (Все другие культуры):
CompareOptions compareOptions = CompareOptions.IgnoreCase
| CompareOptions.IgnoreWidth
| CompareOptions.IgnoreNonSpace;
string.Compare(strA, strB, CultureInfo.CurrentCulture, compareOptions) == 0
Вызов MethodX из MethodA квалифицирует его как рекурсивное использование блокировки.
См. Примечания на странице MSDN для ReaderWriterLockSlim:
По умолчанию новые экземпляры ReaderWriterLockSlim создаются с
LockRecursionPolicy.NoRecursion
флаг и не разрешать рекурсию. Эта политика по умолчанию рекомендуется для всех новая разработка, потому что рекурсия вносит ненужные осложнения и делает ваш код более подверженным тупиковые ситуации. Чтобы упростить миграцию с существующие проекты, использующие Monitor или ReaderWriterLock можно использоватьLockRecursionPolicy.SupportsRecursion
флаг для создания экземпляров ReaderWriterLockSlim, которые позволяют рекурсия.