为什么我们使用字段&属性而不仅仅是变量?

时间:2012-12-05 18:53:34

标签: c# properties field

  

可能重复:
  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;
    }
}

为什么我们在使用简单变量时会使用字段和属性来保存值? 为什么我应该使用字段和属性而不是简单的变量?

3 个答案:

答案 0 :(得分:2)

仅用于封装原则。对于hinding具体实现,加上,您有机会(在这种情况下)在get/set内添加其他代码。

如果您不需要附加代码,则可以使用

public string Name{get;set;}

或使用fileds,如您所愿。但使用属性是Microsoft提供的指南

所以基本上都是,按照它。

答案 1 :(得分:0)

这有很多原因,但马上会想到2:

首先,可以轻松地将属性绑定到控件或其他基于反射的控件,这些控件读取所有属性(而不是字段)。

其次,您可能希望在getter或setter中执行操作(例如触发NotifyPropertyChanged事件)。

答案 2 :(得分:0)

属性提供了通过属性读取和写入字段来保护类中字段的机会。在其他语言中,这通常由实现专门的getter和setter方法的程序来完成。 C#属性启用此类保护,同时还允许您像访问字段一样访问该属性。

属性对字段的另一个好处是您可以随时更改其内部实现。对于公共字段,底层数据类型必须始终相同,因为调用代码取决于字段是否相同。但是,使用属性,您可以更改实现。