从类中访问类成员

时间:2011-09-13 18:17:48

标签: c# oop

当您从类中访问属性时,您应该使用私有成员变量还是公共属性?

5 个答案:

答案 0 :(得分:3)

实际上这个问题的答案,但我相信只有通过询问另一个人才能得到答案:

  

我是否通过使用变量或属性来获得所需的行为?

属性通常会对数据执行操作,这意味着您可能无法从一个到另一个获得完全相同的值。一般来说,它们不会做任何“昂贵”的事情,也不会产生在类的其他有些相关元素中出现的副作用(属性不应该这样做),但属性的一个好处是有一个'掩码',可以这么说,提供所需的获取设置行为,这些行为可能与直接返回或赋值不同,其中变量是原始的,未掺杂的数据 - 这是你需要注意的。

例如,您可能会发现X 的属性从不返回null,但基础变量可以是,有时 null - 在这种情况下,您的操作可能依赖于检查null,而该属性向外部公开“安全投注”。因此,您必须在此特定情况下使用基础元素。

显然你应该在这种做法中争取一些一致性模型,但上面是原则,而且这种做法主要是针对每个解决方案,项目,甚至是阶级决定的!

答案 1 :(得分:1)

如果它的某个公共属性有一个setter,我会使用它(其他条件相同)。

答案 2 :(得分:1)

通常,在您的类中,当有一个属性本身也引用私有变量时,请使用类中的私有变量。这是一个实现细节。该物业的目的是拥有一个稳定的向外界面。

但是,如果你的属性实际上做了一些你依赖的聪明的东西(比如依赖属性),你可以选择总是使用该属性来重用这种智能。

至少,在你正在做的事情中,当然是在一个班级的范围内,因为你的实现是可以理解和维护的。

答案 3 :(得分:0)

在大多数情况下 - 访问私人领域。

在MVVM视图模型或实现INotifyPropertyChanged的任何其他类(或类似的情况,当上下文需要它时)时,您应该访问公共属性,让订阅者收到有关值更改的通知。

答案 4 :(得分:0)

取决于该属性是否有任何逻辑: 就像验证setter中的输入一样, 或者在获得时返回标准值等。

仅仅针对这些论点,我建议使用这些属性。 而且总是明智地使用私人/公共。