根据讨论 here,其中一个答案似乎暗示通过使用从C#到VB.NET的代码转换器,应用于int的运算符应替换为System.Math.Max(System.Threading.Interlocked.Increment(当前),当前 – 1)),我想知道这是否真的正确?
如果是这样,为什么它是正确的?我不认为该运算符将被实现为Interlocked.Increment操作?我甚至不认为它是线程安全的.我没有看到这两个人是一样的,然后为什么这个问题的答案与之相关,甚至有效?
我尝试了它,它产生了正确的结果. AFAIK,.NET没有像C那样的未定义行为.
任何人都可以澄清一下吗?
你可以在VB.Net中做x = 1.不如x优雅,但优于x = x 1.Interlocked.Increment用于使您的添加操作线程安全.你可能根本不需要它.
编辑:另外,如果不清楚,VB中没有运算符,我不明白为什么,但是……