哪一个是最高效的&哪一个(主观上)可读性最好?(另一位开发人员编写了第二个选项,我想确保我有充分的理由将其更改为与下面的第一个选项相匹配)
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;
我知道这会产生边际差异,但我有一个绘图算法,需要尽可能快!所以每一点点都有帮助。不,在这一点上,使用另一种语言处理图形不是一种选择。
谢谢你的帮助!
var pen = highlight ? highlightPen : Pens.Red;
static readonly Pen highlightPen = new Pen(Color.Red, 3.0f);
这里的"性能"没有问题:如果怀疑有性能问题,则基准测试、基准测试(在实际使用场景中),请参阅。
无论如何,我的偏好是:
var pen = highlight
? new Pen(Color.Red, 3.0f)
: Pens.Red;
但在上面的两个中,我更喜欢没有默认值的,但不是为了"性能":我这样做是因为这样可以依靠C#编译器来确保至少执行一个值设置路径(否则它会因使用未分配的局部变量而引发编译错误)。
(是的,虽然这同样适用于分配了初始值的情况,但对于更复杂的情况,它会崩溃,因为需要确保一个执行路径实际执行。因此,我在可行的情况下选择一致性。)
编码快乐!