public class User
{
private string _name;
private int _age;
private string _job;
public string Name
{
get
{
if (_name == "")
{
return "还没起名呢";
}
return _name;
}
set
{
if (value == "猪")
{
//不能起这个名
return;
}
_name = value;
}
}
在调用的时候就可以用上,比如:
User u = new User();
u.Name="猪";
string name = u.Name;
Console.Write(name); 谁能帮我分析下?
{
private string _name;
private int _age;
private string _job;
public string Name
{
get
{
if (_name == "")
{
return "还没起名呢";
}
return _name;
}
set
{
if (value == "猪")
{
//不能起这个名
return;
}
_name = value;
}
}
在调用的时候就可以用上,比如:
User u = new User();
u.Name="猪";
string name = u.Name;
Console.Write(name); 谁能帮我分析下?
{
return "还没起名呢";}
{
get
{
return _name ?? "还没起名呢";
}
set
{
if (value != "猪")
_name = value;
}
}
3.0以上提供了自动属性
public int Id { get; set; }
_name = (value==""?"":"")
1:User u = new User() 创对象;
2:u.Name = "猪";赋值;
3:执行set,因为等于猪,所以,return;
4:执行string name =u.Name; 执行get;
5:_name 并没有进行赋值,所以为null,但是if并不符合,所以没有执行,_name为null;
6:输出name,应该为猪吧,
我分析到哪里出错了?
第六步为什么是猪?_name == null;去 get 很明显只会返回 null
至于类里面是否增加了什么变量都不是很重要。满足类的执行就可以,最后get完成之后类得到返回值。
public string Name
{
get
{
//如果_name是null,或者是空值 則返回"还没起名呢",否則返回name.
return String.IsNullOrEmpty(_name) ? "还没起名呢" :_name ;
}
set
{
//不等於豬,繼續賦值,否則不賦值.
if ((value != "猪")
_name = value;
}
}不太明白什麼地方需要分析啊?
当然你也可以通过自己创建函数来对name进行取值和赋值,但这样就显得比较麻烦了。
public class User
{
private string _name;
private int _age;
private string _job; public string Name
{
get
{
return _name;
} set
{
if (string.IsNullOrEmpty(value))
{
MessageBox.Show("还没起名呢");
return;
}
if (value == "猪")
{
MessageBox.Show("不能起这个名");
return;
}
_name = value;
}
}
}