我已经看到,在 c# 中,以下模式很常见:
private string m_name = string.Empty;
public string Name
{
get
{
return m_name;
}
set
{
m_name = value;
}
}
当我们可以使用一个简单的变量时,为什么我们要使用一个字段和一个属性来保存一个值?为什么我应该使用字段和属性而不是简单的变量?
我已经看到,在 c# 中,以下模式很常见:
private string m_name = string.Empty;
public string Name
{
get
{
return m_name;
}
set
{
m_name = value;
}
}
当我们可以使用一个简单的变量时,为什么我们要使用一个字段和一个属性来保存一个值?为什么我应该使用字段和属性而不是简单的变量?
只是为了封装原则。为了阻止具体的实现,另外,您有机会(在这种情况下)在get/set
.
如果你不需要额外的代码,你可以只使用
public string Name{get;set;}
或根据需要使用文件。但是使用属性是微软提供的指导方针。
所以基本上所有的,都遵循它。
造成这种情况的原因有很多,但马上想到2个:
首先,一个属性可以很容易地绑定到一个控件或读取所有属性(而不是字段)的其他基于反射的控件。
其次,您可能希望在 getter 或 setter 中执行某些操作(例如触发NotifyPropertyChanged事件)。
属性提供了通过属性读取和写入来保护类中的字段的机会。在其他语言中,这通常是通过实现专门的 getter 和 setter 方法的程序来完成的。C# 属性启用这种类型的保护,同时还允许您访问该属性,就像它是一个字段一样。
属性相对于字段的另一个好处是您可以随着时间的推移更改它们的内部实现。对于公共字段,基础数据类型必须始终相同,因为调用代码取决于该字段是否相同。但是,使用属性,您可以更改实现。