Interlocked.Exchange не может использоваться с дженериками? - PullRequest
3 голосов
/ 10 сентября 2009

Я пишу универсальный класс, где мне нужно использовать Interlocked.

T test1, test2;
Interlocked.Exchange<T>(ref test1, test2);

Это не скомпилируется. Поэтому я вынужден вместо этого использовать Exchange (Object, Object), даже если MSDN советует не использовать его таким образом?

1 Ответ

10 голосов
/ 11 сентября 2009

Это будет работать при условии, что ваш универсальный класс имеет те же ограничения, что и Interlocked.Exchange<T>, а именно where T: class.

Из документов для Блокировано. Обмен :

Этот метод поддерживает только ссылочные типы

...