属性实际上就是字段的一个封装,是为了字段的一个安全性和灵活性做出的一个扩展。
当然,也可以用方法来完成这样的判断,自定义一个方法对私有字段进行读取和赋值操作,但个人觉得使用属性相对比较直观一点。
属性具有两个访问器,一个是读访问器get,一个是set,get是用于获取属性的值,而set是来重写。属性可以对数据的范围等做出限定,相对比字段灵活一些,如在现实中,很多要定义的字段都有自身的一个含义约束,例如,对于年龄字段,肯定他的值不可能为负数,对于性别字段,一般情况下只有男跟女两种情况(除特殊情况),那么在给这些字段赋值的时候就需要对所付的值进行一个范围或者真确性进行判断,但是字段本身没有这种能力,这时候就可以使用属性。
看以下年龄例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace dele
{
class test
{
private int age;
public int Age
{
get { return age; }
set
{
if (value > 0)
{ age = value; }
else
{
Console.WriteLine("年龄必须是正整数");
}
}
}
}
class Program
{
static void Main(string[] args)
{
test zhang = new test();
zhang.Age = -110;
Console.WriteLine(zhang.Age);
Console.Read();
}
}
}
这样可在set代码块中进行条件的筛选,范围的限定等操作,使得数据比较严谨,如果是赋值是负数,那么将不会成功。
当然,也可以用方法来完成这样的判断,自定义一个方法对私有字段进行读取和赋值操作,但个人觉得使用属性相对比较直观一点。