可能重复:
What is the difference between a field and a property in C#?
Difference between Property and Field in C# .NET 3.5+
我在c#中看到以下模式很常见:
private string m_name = string.Empty;
public string Name
{
get
{
return m_name;
}
set
{
m_name = value;
}
}
为什么我们在使用简单变量时会使用字段和属性来保存值? 为什么我应该使用字段和属性而不是简单的变量?
答案 0 :(得分:2)
仅用于封装原则。对于hinding具体实现,加上,您有机会(在这种情况下)在get/set
内添加其他代码。
如果您不需要附加代码,则可以使用
public string Name{get;set;}
或使用fileds,如您所愿。但使用属性是Microsoft提供的指南。
所以基本上都是,按照它。
答案 1 :(得分:0)
这有很多原因,但马上会想到2:
首先,可以轻松地将属性绑定到控件或其他基于反射的控件,这些控件读取所有属性(而不是字段)。
其次,您可能希望在getter或setter中执行操作(例如触发NotifyPropertyChanged事件)。
答案 2 :(得分:0)
属性提供了通过属性读取和写入字段来保护类中字段的机会。在其他语言中,这通常由实现专门的getter和setter方法的程序来完成。 C#属性启用此类保护,同时还允许您像访问字段一样访问该属性。
属性对字段的另一个好处是您可以随时更改其内部实现。对于公共字段,底层数据类型必须始终相同,因为调用代码取决于字段是否相同。但是,使用属性,您可以更改实现。