简介:
在C#中,属性的本质是两个方法get 和 set。 用于对外提供访问类内private字段的路径。
get 方法是提供类外获取private字段值的途径,set 方法是提供类外对类内private字段赋值的合法途径
(我们可以set 方法中,定义什么样的输入值是合法的,避免非法输入)。
例子:
一般属性:
private string str ;
public string _str{
get { return str; }
set { str = value; }
}
自动属性
public string _str{
get { }
set { }
}
只读属性
public string _str{
get { }
}
只写属性
public string _str{
set { }
}
使用自动属性时,代码在编译时会自动添加一个私有字段(可以通过反汇编得知)。一般不建议使用自动属性因为自动生成的字段存在不可预测(不看其编译后的代码,我们甚至不知道编译在后台给我们生成了一个私有字段)
拓展:
正因为属性实际上是两个名为get ,set的方法不是字段,所以在接口中可以声明属性,然而接口中的属性必须是自动属性 因为接口中不能有字段,只包含未实现的方法
编程经验:
在DataGrid控件中,当需要绑定到一个自定义的类的相关字段中时,必须将相应的字段封装成属性才能进行数据绑定
可以在属性的set方法中进行,验证控制,拒绝非法值得输入