C#属性或简单变量,代码样式

C# property or a simple variable, code style

本问题已经有最佳答案,请猛点这里访问。

我想知道,在C中,我可以这样声明(我经常从代码评审中看到这样的风格):

1
2
3
4
5
6
7
8
9
10
11
string myVarName
{
    get
    {
        return myVarName;
    }
    set
    {
        myVarName = value;
    }
}

但许多人认为,这比仅仅宣布"不属于财产"要好得多。

我有时会感到困惑,因为我经常在代码清单中看到这样的样式。

为什么更好?属性inlined是否除了提示JIT-compiler应该在使用它的位置内联编译函数以避免函数调用开销之外?

或者我可以通过表演赢得比赛?

至于代码样式,我更喜欢简单的变量声明而不是属性样式。

至于属性,我只能看到一些默认操作/触发器的最佳优势。例如:我需要从传入值或类似的smth将半值存储在属性中…

也许我一点都不对。我说得对吗?

谢谢!


实际上,这与编码风格无关,您应该以最有利于您的方式使用属性。

我使用这样的属性:

1
public string Name {get;set;}

当我不需要任何特殊的实现时

我这样使用它们:

1
2
3
4
5
6
7
8
9
10
11
public string Name
{
    get
    {
        return name;
    }
    set
    {
        name = value.toLower();
    }
}

当我需要在分配值之前对它做一些事情时。

我也鼓励你使用属性,不是因为它"更好",而是因为它更灵活。

想一想你刚刚使用了公共变量。如果需要添加某种验证,则需要更新实例化要修改的类的每个类。对于属性,您不需要任何外部更改。

至于性能问题,不用担心。我不认为你会获得任何性能提升,避免属性,即使你这样做,它将是如此微小,这是不值得的,因为你正在丢弃一个真正有价值的功能,你可能需要在未来,可能会非常痛苦的更新。