哪个是效率最高的&哪个(主观上)最具可读性? (另一位开发人员编写了第二个选项,我想确保我有充分的理由将其更改为与下面的第一个选项相匹配)
Pen pen = Pens.Red;
if (highlight)
pen = new Pen(Color.Red, 3.0f);
或
Pen pen;
if (highlight)
pen = new Pen(Color.Red, 3.0f);
else
pen = Pens.Red;
我知道它有一点边缘差异,但我有一个绘制算法需要尽可能快!所以每一点点都有帮助。不,此时使用其他语言来处理绘图不是一种选择。
感谢您的帮助!
答案 0 :(得分:2)
"表现"没有问题。在这里:如果性能问题怀疑,那么基准,基准,基准(在实际使用场景中)并看到。
无论如何,我的偏好是:
var pen = highlight
? new Pen(Color.Red, 3.0f)
: Pens.Red;
但在上面两个中,我更喜欢没有默认值,但不是"性能":我这样做是因为那时候然后可以依赖C#编译器来确保至少一个的值设置路径被执行(或者它将抛出关于使用未分配的局部变量的编译错误)。
(是的,虽然同样适用 分配初始值的情况,但在需要确保一个的更复杂情况下会出现故障执行路径实际执行。因此我选择一致性,在实际可行的情况下。)
快乐的编码!
答案 1 :(得分:2)
var pen = highlight ? highlightPen : Pens.Red;
static readonly Pen highlightPen = new Pen(Color.Red, 3.0f);