关于Property setter的问题

warchief3000 2010-06-17 12:42:00
比如说,我有一个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什么.
}
}
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpolice_wj 2010-06-18
  • 打赏
  • 举报
回复
顶起,学习
兔子-顾问 2010-06-17
  • 打赏
  • 举报
回复
你的问题分开说
1.可以不要定义变量,但实际只是你没定义,还是编译器给你定义了
2.你循环赋值,递归调用自然会死掉

自动属性,3.5及以上版本支持
        public int Width
{
set;
get;
}
CGabriel 2010-06-17
  • 打赏
  • 举报
回复
1. Value 是输入参数
2. 就 public int Width { set; get; } 而言,编译器会帮你加一个成员变量。唯一的不同时你写打少少写字母而已。
mapserver 2010-06-17
  • 打赏
  • 举报
回复
奇怪的想法。

Property在OO的思想中,就是尽量避免过多暴露Field;也可以说,Property存在的前提是有Field,哪怕你是
public int Width { set; get; }定义,在编译的时候,编译器还是会帮你定义Filed。
jianuMan 2010-06-17
  • 打赏
  • 举报
回复

set
{
这里可以调用函数
}

别的 我就不明白 你为啥要不定义_width

你是不是想Width 只读 不可写?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧