根据讨论 here ,其中一个答案似乎暗示通过使用从 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 中没有++ 运算符,我不明白为什么,但是......