Property总结
Property一般用来给field赋值:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 private string _name 2 public string Name 3 { 4 get{return _name;} 5 set{_name = value;} 6 }
可以给Field赋值的不只是property,也可以是constractor或者一个方法,但是如果我们想要向外暴露这个filed我们才需要写property
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class Person 2 { 3 private string _name 4 public Person(string name) 5 { 6 _name = name; 7 } 8 } 9 10 11 //或者 12 13 class Person 14 { 15 private string _name 16 public void Person(string name) 17 { 18 _name = name; 19 } 20 }
我们可以用Setter做更多事
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 private int _dividend; 2 public int Dividend 3 { 4 get { return _dividend; } 5 set 6 { 7 if (value == 0) 8 { 9 throw new ArgumentException("Can not set dividend to 0!"); 10 } 11 } 12 }
就算只有一个数据传入口,我们也建议用property,代替public的field
public string Name { get; set;}
一般只有property,event,methord是puublic的其他结构都做private
有的时候我们需要set bunch piece of propertys as unit,我们应该用一个方法去set property together
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public string Name { get; private set; } 2 public string Address { get; private set; } 3 public int ZipCode { get; private set; } 4 public string State { get; private set; } 5 6 public void SetName(string name) 7 { 8 Name = name; 9 } 10 public void Move(string address, int zipCode, string state) 11 { 12 Address = address; 13 ZipCode = zipCode; 14 State = state; 15 }