吸气者的二传手差异

bil*_*lal 2 c# encapsulation getter-setter

我在C#中编写getter setter,我可以用样式或语法编写,是什么时候使用其中一个?封装是从它们两者实现的吗?

例1:

public List<ChatMessage> MessageListWithoutPrivateVariable { get; set; }
Run Code Online (Sandbox Code Playgroud)

例2:

public List<ChatMessage> MessageList {
  set {
    messageCollection = value;
  } get {
    return messageCollection;
  }
}
Run Code Online (Sandbox Code Playgroud)

Seb*_*ebi 5

一般来说,两种方式都是一样的.在C#v3.0之前,第一种可能性不适合程序员.但微软认为如果程序员可以像你先描述的那样编写速记风格会更有效率.

所以实际上它只是缩写形式,也称为自动实现的属性.C#在后台自动生成一个后备字段,因此允许封装.

在某些情况下,您将需要第二种方法,也称为手动属性.例如,如果要在setter中使用INotifyPropertyChanged或其他一些值检查.

回答你的问题:使用你喜欢的.或者如果可能的话,先使用第一种方法