public class TestClass
{
private string _AA;
public string BB
{
get { }
set { }
}
}在上边例子中我们都知道_AA是字段,BB是属性,再看下边的例子:
public class TestClass
{
public string _AA;
private string BB
{
get { }
set { }
}
}_AA是字段还是属性?BB是字段还是属性?突然发现长久以来潜意识的竟用private和public来区分字段还是属性了,潜意识认为private的是字段,public的是属性!实际上,字段还是属性的区别应是看有无访问器,无访问器的为字段,有访问器的则为属性,所以,第二个例子中_AA仍是字段,BB仍是属性。我们再来看一个例子:
public class TestClass
{
public string AA;
public string BB
{
get { }
set { }
}
}对外界而言,访问上边字段和属性其实中一样的,那字段和属性有什么区别呢?个人认为主要区别有以下几点:
·可在get和set块对属性的取值范围等做限制,而字段的范围只取决于其类型,无法精确控制;
·可通过设置get和set块的有无,设置属性的读写权限;
正因为上边几点,所以我们常常在声明一个public属性的同时声明一个private字段,在字段中保存属性的值以便在读取属性值时使用:
public class TestClass
{
public string _AA;
public string BB
{
get
{
if (_AA.Substring(0, 1) == "@")
{
return _AA;
}
else
{
return string.Empty;
}
}
set { _AA = value; }
}
}注:在类内部使用字段和属性没有一点区别,不受访问权限的限制!
评论(0)
暂无评论。