C#样式:可以将属性与其后备字段分组吗?

时间:2011-05-19 20:41:32

标签: c# properties coding-style field backing-field

我喜欢组织这样的简单属性:

private int foo;
public int Foo
{
    get { return foo; }
    set
    {
        // validate value
        foo = value;
    }
}

我一直在玩StyleCop,并且因为在施工人员之后放置字段而对我大喊大叫。这种风格是否被普遍接受,只要该字段永远不会在该属性之外引用?注意:我意识到涉及个人偏好,但我想知道是否就此问题达成了普遍共识。

4 个答案:

答案 0 :(得分:6)

是的,这对我来说似乎是合理的。

通常我将所有字段和属性放在顶部,然后是构造函数,然后是方法 - 但是如果你想把它们放在构造函数之后,这似乎也是合理的。

答案 1 :(得分:3)

如果您的属性将是简单的数据访问,请考虑使用自动属性:

public int Foo { get; set; }

编译器将代表您在幕后创建一个私有成员变量。

特别针对您的问题,不要在ReSharper或StyleCop等工具中放置太多库存。他们格式化代码的一些方式以及他们抱怨的事情确实是一个偏好问题。我不会将成员变量放在他们的公共属性附近,但我可以看到这是多么方便。

答案 2 :(得分:1)

月?因为这只会影响团队中的人,所以你必须弄清楚他们认为最好的东西,然后再去做。风格警察通常有点......对其建议过于苛刻。

我通常将放在属性之后,因为上面的空格是为文档保留的。

// placed up here, it looks kinda weird, imho
// private int foo;
/// <summary>
/// The index of the Foo in the <see cref="Bar"/>
/// </summary>
public int Foo
{
    get { return foo; }
    set
    {
        // validate value
        foo = value;
    }
}
private int foo;

答案 3 :(得分:1)

这可能是一个偏好的问题,但这似乎比让他们与私人成员混合更好。

我通常使用嵌套区域来支持属性区域内的字段,因为它不会干扰visual studio注释,但它们会被组合在一起。