我想知道在类构造函数中使用私有字段是否存在任何显着的性能(或正确性)差异,而不是更改这些私有字段的属性。
样品:
class Pt<T>
{
public Pt(T _x, T _y) // More efficient/correct?
{
this.x = _x; // or x = _x
this.y = _y; // or y = _y
}
public Pt(T _x, T _y) // Less efficient/correct?
{
X = _x;
Y = _y;
}
private T x, y;
T X { get { return x; } set { x = value; } }
T Y { get { return y; } set { y = value; } }
}
答案 0 :(得分:1)
就正确性而言,您的代码绝对没有区别。从性能的角度来看,使用属性版本时会有轻微的开销,因为设置/获取属性需要额外的方法调用,因为属性由编译器转换为方法。这种性能影响非常小,不会引人注意,因此编写最易读且与.NET标准一致的版本。