在我们的一项旧服务中,我发现了这样一段代码(评论为原创):
long[] tasksCounter = {0}; //boxing for long counters
long[] errorsCounter = {0}; //boxing for long counters
此外,在代码中,这些“数组”与联锁 https://learn.microsoft.com/en-us/dotnet/api/system.threading.interlocked?view=netframework-4.7.1 class: Interlocked.Increment(ref errorsCounter[0])
, Interlocked.Read(ref errorsCounter[0])
etc).
我想知道为什么作者不使用基本上long tasksCounter, errorsCounter
?
也许这种方法有我不知道的好处?
可能值得一提的是,这些变量在 async lambda 中使用。当我将其更改为基本时long
Resharper 插件警告我“访问修改后的闭包”,并建议将其包装在数组中。我发现了几个关于它的问题:
访问修改后的关闭 https://stackoverflow.com/questions/235455/access-to-modified-closure
ReSharper 警告 - 访问修改后的闭包 https://stackoverflow.com/questions/1688465/resharper-warning-access-to-modified-closure
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)