小编典典

字段和属性有什么区别?

all

在 C# 中,是什么让字段与属性不同,什么时候应该使用字段而不是属性?


阅读 176

收藏
2022-02-25

共1个答案

小编典典

属性公开字段。字段应该(几乎总是)对类保持私有,并通过 get 和 set
属性访问。属性提供了一个抽象级别,允许您更改字段,同时不影响使用您的类的事物访问它们的外部方式。

public class MyClass
{
    // this is a field.  It is private to your class and stores the actual data.
    private string _myField;

    // this is a property. When accessed it uses the underlying field,
    // but only exposes the contract, which will not be affected by the underlying field
    public string MyProperty
    {
        get
        {
            return _myField;
        }
        set
        {
            _myField = value;
        }
    }

    // This is an AutoProperty (C# 3.0 and higher) - which is a shorthand syntax
    // used to generate a private field for you
    public int AnotherProperty { get; set; } 
}

@Kent 指出,属性不需要封装字段,它们可以对其他字段进行计算,或用于其他目的。

@GSS 指出您还可以执行其他逻辑,例如验证,当访问属性时,这是另一个有用的功能。

2022-02-25