在C#中,我以不同的方式创建属性。
像这样:
public Dimension X { get; set; }
并且像这样:
Dimension _x;
public Dimension X
{
get { return _x; }
set { _x = value; }
}
甚至只是使用公共变量
public Dimension X;
如果我“相当”确定获取和设置的需求不会经常变化,那么在使用其中一个之前我应该考虑什么?
答案 0 :(得分:1)
您的第一个代码是演示Auto-implemented properties,这是C#3.0引入的一项功能。它与您拥有支持字段的第二种方法相同。 (如果是自动实现的属性,编译器会添加支持字段)
在C#3.0及更高版本中,自动实现的属性生成 当没有额外的逻辑时,属性声明更简洁 属性访问器中必需。 (MSND)
当你在get
或set
中有一些自定义逻辑时,后备字段很有用,但是如果你的getter或setter中没有任何逻辑,那么使用自动实现的属性就可以了。
您的上一个代码是针对公共领域的。它与公共财产不同。您可以查看此问题Public Fields versus Automatic Properties以获取更多详细信息。
答案 1 :(得分:0)
我的建议是永远不要使用第三个选项。仅在需要操作值的情况下通过getter和setter公开属性。
在其他两个选项中,如果你需要对值进行操作,那么后备变量是有意义的(你的第二个选项)。如果属性是值进出的直接传递,则“自动”属性(您的第一个选项)简洁明了,但仍然可以选择在将来拥有支持变量。
答案 2 :(得分:0)
基本上你必须使用
Dimension _x;
public Dimension X
{
get { return _x; }
set { _x = value; }
}
当您计划添加一些额外的操作时
Dimension _x;
public Dimension X
{
get
{
// do more stuff here
return _x;
}
set
{
// do more stuff here
_x = value;
}
}