Длинный против {0L}[0]

В одном из наших старых сервисов я нашел такой кусок кода (комментарии оригинальные):

long[] tasksCounter = {0};  //boxing for long counters
long[] errorsCounter = {0}; //boxing for long counters

Далее в коде эти "массивы" используются с классом Interlocked: Interlocked.Increment(ref errorsCounter[0]), Interlocked.Read(ref errorsCounter[0]) так далее).

Интересно, почему автор не использовал основы? long tasksCounter, errorsCounter?

Возможно, у этого подхода есть преимущества, о которых я не знаю?

Вероятно, стоит упомянуть, что переменные используются в асинхронной лямбде. Когда я изменяю это на основной long Плагин Resharper предупреждает меня "Доступ к измененному закрытию" и предлагает обернуть его в массив. Я нашел пару вопросов об этом:

Доступ к измененному закрытию

ReSharper Warning - Доступ к измененному закрытию

0 ответов

Другие вопросы по тегам