关于C#:为什么我们使用字段和属性而不仅仅是变量?

Why do we use fields & properties instead of just a variable?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the difference between a field and a property in C#?
Difference between Property and Field in C# .NET 3.5+

我已经看到,在C中,以下模式很常见:

1
2
3
4
5
6
7
8
9
10
11
12
13
   private string m_name = string.Empty;

public string Name
{
    get
    {
        return m_name;
    }
    set
    {
        m_name = value;
    }
}

当我们可以使用简单变量时,为什么要使用字段和属性来保存值?为什么要使用字段和属性而不是简单变量?


只是为了封装原理。对于Hinding Complementation Implementation,and more,you have an opportunity(in this case)to add additional code inside get/set.

如果你不需要添加代码,你就可以使用

1
public string Name{get;set;}

或使用文件,如你所愿。但使用性能是微软提供的一条指南。

所以基本上,跟随它。


性能提供了通过阅读和写入通过性能保护一类场地的机会。在其他语言中,这通常是通过程序实现的,特别是吸收和设置方法。这种类型的保护是可以实现的,同时也让你可以进入财产就像是一个场。

地面上的另一个好处是,你可以在一段时间内改变他们的内部执行。在一个公共领域中,数据的底层类型必须始终是相同的,因为呼叫代码取决于实地的情况。但是,如果有一个属性,你可以改变执行。


这有很多原因,但两个原因是:

首先,一项财产可以容易地连接到一个控制或其他基于控制的反射控制,该控制或控制是阅读所有性能(rather than fields)。

第二,可能有一些行动你想在接受者或设置者(例如,启动一个通知型的交换事件)中进行表演。