字段和属性有什么区别? [英] What is the difference between a field and a property?

查看:37
本文介绍了字段和属性有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In C#, what makes a field different from a property, and when should a field be used instead of a property?

推荐答案

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

Properties expose fields. Fields should (almost always) be kept private to a class and accessed via get and set properties. Properties provide a level of abstraction allowing you to change the fields while not affecting the external way they are accessed by the things that use your class.

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 指出,Properties 不需要封装字段,它们可以对其他字段进行计算,或用于其他目的.

@Kent points out that Properties are not required to encapsulate fields, they could do a calculation on other fields, or serve other purposes.

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

@GSS points out that you can also do other logic, such as validation, when a property is accessed, another useful feature.

这篇关于字段和属性有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆