c# 属性与字段

来源:百度知道 编辑:UC知道 时间:2024/06/09 10:46:39
private int _Z;
public int Z
{
set { this._Z = value; }
get { return this._Z; }
}
上边的写法的作用与public int _Z;的作用有什么区别?

我这样理解不知道对不对?
类A外的程序不可以用_Z。但是可以通过Z来访问_Z的值。意思是不是说你要访问字段_Z的值,你必须知道Z属性的值就是字段Z的值。然后通过属性Z访问字段_Z的值。

你说的差不多对吧,属性可以对这个字段的值进行控制,提高安全性,比如输入一个人的年龄就不能小于0了。

private int _age;
public int Age
{
get { return _age; }
set
{
if(value < 0)
{
throw new ArgumentOutOfRangeException("Invalid value for co_phone", value, value.ToString());;
}

this._age = value;
}
}

他的作用的理解是对的。什么都不需要知道。。。访问他就只要建立一个对象,然后一点就点出来了。

个人认为属性比字段好的一点
比如给字段_Z赋值后就只是_Z的值变了而不能进行其它操作
而属性赋值后你还可以写代码比如
public int Z
{
get { return this._Z; }
set
{
this._Z = value;
//这写代码
}}
这样的话如果那里用到这个值的话就可以随时更改而字段就必须要做其他操作

你理解的差不多,呵呵,其实这种写法就是便于封装。属性是私有的。

private int _Z;
public int Z
{
set { this._Z = value; }
get {
if(姓名=="管理员")
{return this._Z;}
}
}
---------属性可以更好的控制私有字段,像上面的,如果是管理员才可以得到_Z,如果public int _Z这样写,谁都可以读写