我知道使用自动属性时,编译器会在屏幕后面创建自己的后台字段。然而,在许多程序中,我读了,我看到人们学会明确写入有或没有后场的自动属性 - 偏好?
private int _backingField;
public int Property { get { return _backingField; } }
是什么区别上方与下方?
public int Property { get; private set; }
我的理解是其明显的使用属性,当你确实有在getter或setter的副作用,但是这往往并非如此。另外,我知道你必须在结构的情况下明确地使用后台字段,你不能通过属性访问他们的成员。
我一直能找到的唯一区别是调用该值的方式在它定义的类内部是不同的。它是简单的首选项,还是有更多通过其属性调用值或通过直接访问该字段? 简单的约定?
以XNA的Vector2为例,如果我说 public Vector2 TheVector {get;组; } 我不能打电话 TheVector.X = 10; 相反,我必须使用实际的字段。关于通过价值/参考的事情。 (你有一些阅读材料,澄清通过值/参考C#,作为旁注?) – Taelia 2012-03-10 11:18:55
另外,如果我的两个例子之间真的没有区别,为什么这么多人仍然明确地创建一个后场(没有真正的目的)? – Taelia 2012-03-10 11:22:10
@Taelia:对,这就是我可以避免的可变结构。这是因为该属性返回值的一个副本。而且我不会试图说出其他人做什么的理由。 – 2012-03-10 11:24:05