Предположительно, вы используете двойную проверку блокировки, потому что у вас есть ресурс, который вы хотите инициализировать ленивым, многопоточным способом.
Двойная проверка блокировки - это механизм для достижения этого, но, как вы правильно заметили, многословие механизма полностью перебивает смысл кода.
Если у вас есть механизм, скрывающий значение, скрывайте механизм, создавая абстракцию . Один из способов сделать это - создать класс «ленивый потокобезопасный экземпляр» и передать ему делегат, который выполняет ту операцию, которую вы хотели бы сделать, ленивым, потокобезопасным способом.
Однако есть лучший способ. Лучше не делать это самостоятельно, а позволить специалисту мирового уровня по многопоточности сделать это за вас. Таким образом, вам не нужно беспокоиться о том, чтобы сделать это правильно. Джо Даффи должен беспокоиться о том, чтобы сделать это правильно. Как мудро говорит Джо, вместо того, чтобы повторять механизм блокировки повсюду, напишите его один раз и затем используйте абстракцию.
Код Джо здесь:
http://www.bluebytesoftware.com/blog/PermaLink,guid,a2787ef6-ade6-4818-846a-2b2fd8bb752b.aspx
и вариант этого кода будет поставляться в следующей версии библиотеки базовых классов.