1

哪个是最有效的,哪个是(主观上)最易读的?(另一位开发人员编写了第二个选项,我想确定我有充分的理由更改它以匹配下面的第一个选项)

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;

我知道它会产生微小的差异,但我有一个绘制算法需要尽可能快!所以每一点都有帮助。不,此时使用另一种语言来处理绘图不是一种选择。

谢谢您的帮助!

4

2 回答 2

2

这里的“性能”没有问题:如果怀疑有性能问题,那么基准测试、基准测试、基准测试(在实际使用场景中)然后查看。

无论如何,我的偏好是:

var pen = highlight
  ? new Pen(Color.Red, 3.0f)
  : Pens.Red;

但是在上述两个中,我更喜欢没有默认值的那个,但不是为了“性能”:我这样做是因为然后可以依赖 C# 编译器来确保执行至少一个值设置路径(或者它会抛出一个关于使用未分配的局部变量的编译错误)。

(是的,虽然对于分配了初始值的情况也是如此,但对于更复杂的情况,它会崩溃,因为需要确保其中一个执行路径实际执行。因此,我在可行的情况下选择一致性。)

快乐编码!

于 2012-07-19T23:47:14.363 回答
2
var pen = highlight ? highlightPen : Pens.Red;


static readonly Pen highlightPen = new Pen(Color.Red, 3.0f);
于 2012-07-20T00:04:31.353 回答