比如说,我有一个Property叫Width.public int Width { set; get; }这是最简单直接的方式.如果,我想在set的时候做些什么,我可以这么写:public int _width;public int Width
{
set
{
_width = value;
Console.Out.WriteLine(_width); //比如说显示出来
//然后,再做些很复杂的东西.
}
get
{
return _width;
}
}我的问题是,有方法不额外定义local variable来实现吗? (_width)
或者说,所有setter,不管Property名字是什么,不都可以用value来取得新的值嘛,那相对的被赋值的东西呢?public int Width
{
set
{
Console.Out.WriteLine(value);
//也做一些很复杂的东西.
Width = value; //这样是会死循环的.
}
get
{
//另外,没有local variable ( _width ),这里也不知道该return什么.
}
}
{
set
{
_width = value;
Console.Out.WriteLine(_width); //比如说显示出来
//然后,再做些很复杂的东西.
}
get
{
return _width;
}
}我的问题是,有方法不额外定义local variable来实现吗? (_width)
或者说,所有setter,不管Property名字是什么,不都可以用value来取得新的值嘛,那相对的被赋值的东西呢?public int Width
{
set
{
Console.Out.WriteLine(value);
//也做一些很复杂的东西.
Width = value; //这样是会死循环的.
}
get
{
//另外,没有local variable ( _width ),这里也不知道该return什么.
}
}
1.可以不要定义变量,但实际只是你没定义,还是编译器给你定义了
2.你循环赋值,递归调用自然会死掉自动属性,3.5及以上版本支持
public int Width
{
set;
get;
}
set
{
这里可以调用函数
}别的 我就不明白 你为啥要不定义_width你是不是想Width 只读 不可写?
public int Width { set; get; }定义,在编译的时候,编译器还是会帮你定义Filed。
2. 就 public int Width { set; get; } 而言,编译器会帮你加一个成员变量。唯一的不同时你写打少少写字母而已。