代码之家  ›  专栏  ›  技术社区  ›  Blorgbeard

我可以用get和set代码创建自动属性(没有私有成员)吗?

  •  1
  • Blorgbeard  · 技术社区  · 17 年前

    在C中,我可以这样做:

    public int Foo { get; set; }
    

    真不错。但一旦我想在getter或setter中做任何事情,我就必须将其更改为:

    private int foo;
    public int Foo {
        get { return foo; }
        set {
            foo = value;
            DoSomething();  // all that other code, just to add this line!
        }
    }
    

    有没有可能避免这种情况?我希望能够做这样的事情:

    public int Foo {
        get;
        set {           
           DoSomething();
        }
    }
    

    我离上面有多远?

    4 回复  |  直到 17 年前
        1
  •  6
  •   Dustin Campbell    17 年前

    不,对于C或C 4.0的现有版本中的属性,没有办法做到这一点。

        2
  •  2
  •   Sam Saffron James Allen    17 年前

    正如其他人所说,没有内置的方法来实现这一点。

    你可以用 PostSharp . 但我不确定是否值得这么做。

    [AfterSet(DoSomething)]
    public int Foo {
        get;
        set;
    }
    
        3
  •  0
  •   David Brown Muad'Dib    17 年前

    使用自动属性,编译器为您生成一个支持字段。自定义getter/setter需要手动创建一个支持字段来使用。在自动属性上指定自定义getter/setter的能力本质上会使它像一个方法一样工作,因为没有任何要获取或设置的内容。

        4
  •  0
  •   BFree    17 年前

    简短的回答?不,答案很长?对不起,还是不行。:)我感觉到了你的痛苦,但就是这样。