在C#中,您可以创建的getter /比其他语言更简单的方法制定者:

public int FooBar { get; set; }

这创建你不能直接解决,与外部属性“fooBar”的内部专用变量直接访问它。

我的问题是 - 你经常看到这种滥用?这似乎是它具有很高的潜力,往往破坏封装最佳实践。不要误会我的意思,我在你的代码库使用它作为合适的,只读只写类型的属性呢局部变化,但你有什么不愉快的经历与它与其他作家?

澄清:滥用的预期定义的确会被创建时,私有变量是适当的这样的属性

有帮助吗?

解决方案

我已经看到了滥用(在我看来)。具体地,当显影剂将写:

private readonly int foo;
public int Foo
{ 
    get 
    { 
        return foo;
    }
}

它们有时会写:

public int Foo { get; private set; }

是,它的短。是的,从外部类具有相同的外观 - 但我不认为这是一回事,因为后者的形式允许属性在同一类的其他地方进行设置。这也意味着,如果该属性未在构造函数中设置,并且该字段不是只读的CLR,有没有报警。这些细微的差别,但只是去第二个形式,因为它更简单,而忽略差异感觉就像滥用对我来说,即使是轻微的。

幸运的是,这是现在可作为C#6:

// Foo can only be set in the constructor, which corresponds to a direct field set
public int Foo { get; }
scroll top