c#字段和属性

C# fields and properties

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

Possible Duplicate:
What is the difference between a field and a property in C#

我不理解类中字段和属性之间的区别。


字段是信息的存储位置。例如,如果字段的类型为int,则它存储一个32位整数(从大约-40亿到大约+40亿)。

属性几乎就像一个方法或一对方法。只是代码而已。没有存储。例如,而不是

1
2
3
4
5
6
7
public int FortySeven
{
    get
    {
        return 47;
    }
}

你也可以写

1
2
3
4
public int GetFortySeven()
{
    return 47;
}

它或多或少是相同的;唯一的区别是你写了EDOCX1(没有括号)但是EDOCX1(有括号)。

当然,属性也可以有一个setter,这意味着

1
2
3
4
5
6
7
public int FortySeven
{
    set
    {
        Console.WriteLine(value);
    }
}

1
2
3
4
public void SetFortySeven(int value)
{
    Console.WriteLine(value);
}

现在你写的不是FortySeven = 47,而是SetFortySeven(47),但在功能上是一样的。

自动实现的属性如下:

1
public int MyProperty { get; set; }

此代码声明字段和属性,但该字段不可见,您只能访问该属性。它使用不可见的字段进行存储。