字段和属性C#中的最佳实践

yay*_*yan 4 c# c#-3.0

亲爱的,哪一个是使用C#的最佳实践,为什么?
1.

private string name;

public string Name
{
  get { return name; }
  set { name = value; }
}
Run Code Online (Sandbox Code Playgroud)

2.

public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)

3.

protected string name;
public string Name
{
  get { return name; }
  set { name = value; }
}
Run Code Online (Sandbox Code Playgroud)

请加上......

Wil*_*den 14

小片12都很好.当您不需要访问底层字段时,第二种方法是编写第一种方法.

但是,通常应该避免使用代码段3(除非您有某些特定原因需要它),因为字段几乎应该是私有的.如果您需要提供一种不同的方法来为后代类设置字段(这是不太可能的),那么您可以使用方法或其他属性.

请记住,受保护的成员本质上只是一个稍微受限制的公共成员,因为它可以通过客户端代码访问,只要它在后代类中即可.这意味着客户端代码可以直接绑定到类的实现而不是它的接口,这是一件坏事!

  • +为受保护的警告。应该强制继承者使用基类的属性。 (2认同)

Row*_*haw 11

从第二个片段开始,即

public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)

需要添加验证时将其更改为第一个代码段的形式,或者在设置值时执行某些逻辑.

我会避免使用最后一个选项,因为它允许覆盖类直接访问将您绑定到特定实现的支持字段(这也意味着可以绕过您可爱的验证)