这两种将值加一的方法

if (Condition) int++;




int+= Convert.Toint32(Condition);


那么以一种或另一种方式书写是否有好处,或者它们基本相同?

最佳答案

我认为代码的清晰度取决于上下文。

在几乎所有普通情况下,

if (condition) i++;


...将更容易阅读。

但是,在这种情况下,可能会出现一些替代方法,使后续操作变得更容易。想象一下,如果这个清单很长:

var errorCount = 0
errorCount += Convert.ToInt32(o.HasAProblem);
errorCount += Convert.ToInt32(o.HasSomeOtherProblem);
errorCount += Convert.ToInt32(p.DoesntWork);


另一方面,对于上述内容,也许我会找到一种完全不同的代码结构方式,例如

var errorFlags = new [] {o.HasProblem,
                         o.HasSomeOtherProblem,
                         p.DoesntWork};
var errorCount = errorFlags.Count(a => a);


另外,构造

i += Convert.ToInt32(condition);


...可能会导致pipeline更加整洁,因为其中不涉及branch prediction。关键字是可以。

关于c# - “if(condition)int++”和int + =“Convert.Toint32(condition)”之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41578849/

10-13 06:21