微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB.NET中的operator ++-Interlocked.Increment

如何解决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 举报,一经查实,本站将立刻删除。