c#属性与字段,不明白啊?

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:01:15
string strNickName;
public string NickName
{
get { return strNickName; }
set { strNickName = value; }
}
我一直不明白,属性,他的这种写方,我非常的不明白,
通过构造函数,这个是一个只读属性
public string NickName
{
get { return strNickName; }
// set { strNickName = value; }
}
public string NickName
{
get { return strNickName; }
// set { strNickName = value; }
}
这个只写属性
public string NickName
{
// get { return strNickName; }
set { strNickName = value; }
}
我不明白为什么要这样做啊,不明白啊?

目前来说,你也就需要知道属性的用法,以及“可以这样做”
“为什么要这么做”等你用到具体实例就清楚了
下面可举个例子:
//通过用户名从数据库获取用户信息
public class User
{
string _email;
public User(string name){
LoadUser(name);
}
void LoadUser(string name){
//从数据库获取用户name的相关信息(将email赋值给_email)
}
public string Email{
get {return _email;}
}
}
使用:User user = new User("张三");
string email = user.Email;//Email为只读,因为是从数据库获取的
而不能 user.Email = "xxx";这是没意义的

限制某操作。比如Person类,Birthday是不会变的,但是年龄是根据Birthday和当前日期来计算的。所以Age可能就只有get,而不能set。

反之,如果你真实的记录了Age,当过了几年的时候,你取出来的Age就有问题了。

而“只写属性”,理论上也可以,不过事实上,比较少见。

这里有段代码,应该可以让你对属性有些了解
class Program
{
//下面是 读写属性
private static int _age; //年龄字段,一般用private修饰,表示私有
public static int Age //属性,一般用public修饰,表示公有
{
get { return _age; }
set
{
//比如说人的正常年龄是0~100岁,但是怕别人输入错误,我们可以通过属性来控制
//下面是:如果不小心或恶意输错了,出现了人的年龄小于0岁或大于100岁,我们则可以把改为18岁