比如说,我有一个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什么.
    }
}

解决方案 »

  1.   

    你的问题分开说
    1.可以不要定义变量,但实际只是你没定义,还是编译器给你定义了
    2.你循环赋值,递归调用自然会死掉自动属性,3.5及以上版本支持
            public int Width
            {
                set;
                get;
            }
      

  2.   


    set
    {
     这里可以调用函数
    }别的 我就不明白 你为啥要不定义_width你是不是想Width 只读 不可写?
      

  3.   

    奇怪的想法。Property在OO的思想中,就是尽量避免过多暴露Field;也可以说,Property存在的前提是有Field,哪怕你是
    public int Width { set; get; }定义,在编译的时候,编译器还是会帮你定义Filed。
      

  4.   

    1. Value 是输入参数
    2. 就 public int Width { set; get; } 而言,编译器会帮你加一个成员变量。唯一的不同时你写打少少写字母而已。