Вы должны использовать вторую форму, чтобы убедиться, что вы контролируете, когда значение установлено.
Если вы выставите ThreadLocal
напрямую, ваш абонент может написать SomeProperty.Value = null
, и вы не сможете предотвратить это.
Заставив весь доступ проходить через ваш класс, вы можете добавить проверку в сеттер.
Кроме того, первая форма позволяет одному потоку стирать значения свойства в других потоках, заменяя весь экземпляр ThreadLocal
.
Обратите внимание, что ваш код не будет компилироваться; вам нужно вернуться и установить .Value
.