基本的C#属性问题

alc*_*cal 2 c# oop properties

在C#中,属性需要引用私有成员变量,还是只需声明属性并直接在类代码中使用它们?

如果前者是最佳实践,那么这会排除使用C#属性的短手吗?即

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

Ree*_*sey 27

属性,当这样实现时:

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

自动创建私有成员变量(编译器为您执行此操作),因此您不必担心它.这将与您执行的操作完全相同:

private string firstName;
public string FirstName { 
    get { return firstName; }
    set { firstName = value; }
}
Run Code Online (Sandbox Code Playgroud)

没有理由不使用自动属性({get; set;}).提供与创建自己的私有成员变量相同的优点.

此外,如果您以后决定需要进行额外处理(例如,如果您决定在属性设置器中实现INotifyPropertyChanged),则可以在不更改公共API的情况下添加此项,但需要手动添加支持字段.

  • 创建自己的简单属性没有任何优势 - 但是你不能使用自动实现的属性制作一个只读属性(即*no*setter,甚至不是私有属性)支持的只读变量:( (4认同)
  • 你可以做一些像`public string FirstName {get; 私人集; }`.如果有人获得实例,它本身不会保护类成员,但它对基本类型非常有用. (2认同)