如何解决VB.NET中的operator ++-Interlocked.Increment
|| 通过这里的讨论,答案之一似乎暗示着,使用从C#到VB.NET的代码转换器,应用于int的operator ++应该替换为System.Math.Max(System.Threading.Interlocked.Increment(current),current - 1))
,我想知道这是否正确?
如果是这样,那为什么正确呢?我不认为operator ++会被实现为Interlocked.Increment操作?我什至都不认为它是线程安全的。我看不到这两个是谁相同,然后为什么链接到该问题的答案甚至起作用?
我尝试过,它会产生正确的结果。 AFAIK,.NET没有像C ++那样的不确定行为。
有人可以澄清吗?
解决方法
您可以在VB.Net中执行
x += 1
。不如x ++优雅,但比x = x + 1好。
Interlocked.Increment用于使添加操作具有线程安全性。您可能根本不需要它。
编辑:此外,如果不清楚,VB中没有++运算符,我不知道为什么,但是...
, C#operator ++不使用互锁的语义。相当于x=x+1
。
, 不,这不是current++
的正确替代,因为current++
会返回current
的不变值(后递增),而
System.Math.Max(System.Threading.Interlocked.Increment(current),current - 1))
返回增加的值(预增加)。
我从C#到VB转换器http://www.developerfusion.com/tools/convert/csharp-to-vb/上得到了相同的代码,而这种差异改变了程序的行为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。