18

在包含它们的类中编写代码时,使用私有字段或属性是一种好习惯吗?

例如,如果我有这个字段/属性对,那么这个类之外的类必须使用这个属性。类内的代码呢?它应该使用私有字段,还是也应该通过属性?

private string _foo;

protected string Foo
{
    get { return this._foo; }
}

private void SomeMethod()
{
  string dummyVariable = "snuh" + this._foo;  // So, this...
  string dummyVariable = "snuh" + this.Foo;  // ... or this?
}

在这里使用该属性的一个好处是,如果 getter 中有任何逻辑,它仍然会被执行。我很想知道这里是否有最佳实践政策可以遵循。

4

1 回答 1

10

使用Auto-Implemented properties时,您别无选择 - 您必须使用该属性,因为您无权访问生成的字段。

如果您的属性不简单并且做了一些额外的工作(验证、触发事件等),您应该调用该属性以集中访问和逻辑。

如果您有任何其他属性(意味着没有逻辑和支持字段的简单属性),我会问为什么它们不是上述之一...

对于您提供的示例,它几乎没有什么区别 - 更重要的是与您如何使用这些保持一致,并且真正归结为个人审美和编码风格。

于 2012-04-28T19:43:20.380 回答