变量和属性的区别是什么?
在变量中存储的数据不能被验证,但是在属性中可以。
属性更像是一个方法,它有 get
和 set
方法,你可以定义这些方法来处理数据。
此外,它们在数据绑定中也非常有用。
属性公开字段。字段应该(几乎总是)保持为私有状态,并通过 get 和 set 属性进行访问。属性提供一种抽象级别,允许你更改字段,而不影响使用你的类的东西外部访问字段的方式。
示例:
就像出生日期的情况一样。你需要验证年龄是否小于今天的日期:
在字段中这是有效的:
DateTime age = new DateTime(2012,12,1);//1 december 2012
但在属性中你可以验证它:
private DateTime _dob; public DateTime dob { get { if(_dob!= null) return _dob; } set { if(DateTime.Compare(value, DateTime.Today) <= 0) { _dob= value; } else { throw new System.InvalidOperationException("Date of Birth should be less then today's date"); } } }