我的讲师告诉我们使用私人田地和公共场所。最近,我正在观看教程视频。演示者仅创建属性。可以使用该属性吗?
答案 0 :(得分:5)
公共属性,例如
public string Name { get; set; }
由编译器自动实现私有后备字段。您永远不会看到它们,但效果与手动指定的支持字段相同。
private string name;
public string Name { get { return name; } set { name =value; } }
答案 1 :(得分:3)
对于.Net framework 2.0
及更少,私有字段是必需的,否则您将收到编译错误。
在.Net Framework
的更高版本中,它可以正常运行而不会出现任何错误。
使用私有字段有很多优点
在将输入分配给属性
之前验证输入public int Max
{
get { return m_Max; }
set
{
if (value>0 && value<100)
{
m_Max=value;
}
}
}
触发错误值的例外
来自https://msdn.microsoft.com/en-us/library/ms229006.aspx,
如果属性设置器抛出异常,则保留以前的值。
- 醇>
避免从属性getter中抛出异常。如果吸气者可以扔 例外,它应该被重新设计为方法
public int Max
{
get { return m_Max; }
set {
if(value > 0 && value < 100){ \\Value is within valid range
m_Max = value;
}
else if(value < 0)
//throw some exception to indicate value is not valid
else if(value > 100)
//throw some exception to indicate value is not valid
}
}
答案 2 :(得分:-1)
是的,没有私有字段可以使用公共属性,但只使用公共字段是不行的。这样做的原因在于,您可以在以后内部更改验证和存储字段的方式,而只更改公共字段会破坏您班级的任何用户。关键的区别在于,对于属性,您仍然可以控制类的内部状态,即使这是使用自动生成的字段,而使用公共字段则不是。