Getter Setter conventions
本问题已经有最佳答案,请猛点这里访问。
在C中,我以不同的方式创建属性。
这样地:
1 | public Dimension X { get; set; } |
像这样:
1 2 3 4 5 6 | Dimension _x; public Dimension X { get { return _x; } set { _x = value; } } |
甚至只是使用一个公共变量
1 | public Dimension X; |
如果我"相当"确定获取和设置的需求不会经常改变,那么在使用之前应该考虑什么?
您的第一个代码是演示自动实现的属性,这是C 3.0引入的一个特性。这与第二种方法相同,其中您有一个支持字段。(如果是自动实现的属性,编译器将添加支持字段)
In C# 3.0 and later, auto-implemented properties make
property-declaration more concise when no additional logic is
required in the property accessors. (MSND)
当您在
最后一个代码是针对公共字段的。它不同于公共财产。您可以看到这个问题公共字段与自动属性,以了解更多详细信息。
基本上你必须使用
1 2 3 4 5 6 | Dimension _x; public Dimension X { get { return _x; } set { _x = value; } } |
当你计划添加一些额外的动作时,比如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Dimension _x; public Dimension X { get { // do more stuff here return _x; } set { // do more stuff here _x = value; } } |
我的建议是永远不要使用第三个选项。只有在将来需要操作值时,才通过getter和setter公开属性。
在其他两个选项中,如果需要对值进行操作,那么后备变量是有意义的(您的第二个选项)。如果属性是值的直接传入和传出,则"自动"属性(第一个选项)简短而简洁,但仍为您提供在将来具有支持变量的选项。