在没有方法的类中是否需要私有字段?

时间:2014-07-09 21:13:19

标签: c# oop syntax resharper conventions

我一直在使用ReSharper来完成清理C#代码库的工作。我一直在使用模型类中的私有字段以及公共属性。但是,我发现我可以简单地获取没有支持字段的属性并将它们转换为自动属性。这些是模型类;其中不存在影响对象中数据的方法。是否更好地使用自动属性?

编辑:包括“支持字段”的示例

public class Gizmo
{
    //this is what I call the "backing" field, only because it's "behind" the
    //publicly-accessible property and you access it through the property
    private Int32 _count;

    //and this is the property, of course
    public Int32 Count
    {
        get { return _count; }
        set { _count = value; }
    }
}

3 个答案:

答案 0 :(得分:4)

这里的方法无关紧要。如果您拥有以下财产:

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

然后绝对将其转化为:

public int Foo { get; set; }

如果任何其他代码使用私有字段,您只需将其更改为使用该属性即可。

答案 1 :(得分:4)

  

仅使用自动属性

是否更好

如果你的财产涉及很简单get;set,你可以使用“自动财产”。如果我没有错,编译器将在幕后创建一个私有支持字段。

如果在您的财产中,您之前正在进行某种验证;在set之前说,那么使用具有支持字段的属性(非自动)

是有意义的

一个例子是

private string name;

public string MyName {
    get {
        return name;
    }
    set {
        name = (value == null)
            ? "Anonymous" : value;
    }
}

答案 2 :(得分:2)

这几乎是一个代码风格的问题。因此,您应该在整个项目或解决方案中拥有模型属性的标准。如果您发现自动属性使您的意图更加明显,请务必使用它们 - 只需使用它们一致