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

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

上一篇 下一篇

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

分割线

网友回答:

面向对象的编程原则说,一个类的内部工作应该对外界隐藏起来。如果你公开一个字段,你实质上是公开了类的内部实现。因此,我们将字段包装为属性(或Java中的方法),使我们能够更改实现而不会破坏依赖于我们的代码。看到我们可以将逻辑放在属性中,也允许我们在需要时执行验证逻辑等。
C# 3 具有可能令人困惑的自属性概念。这允许我们简单地定义属性,C#3 编译器将为我们生成私有字段。

public class Person
{
   private string _name;

   public string Name
   {
      get
      {
         return _name;
      }
      set
      {
         _name = value;
      }
   }
   public int Age{get;set;} //AutoProperty generates private field for us
}

分割线

网友回答:

属性公开字段。字段应该(几乎总是)对类保持私有,并通过 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指出,您还可以在访问属性时执行其他逻辑,例如验证,这是另一个有用的功能。

分割线

网友回答:

一个重要的区别是接口可以具有属性,但不能具有字段。对我来说,这强调了属性应该用于定义类的公共接口,而字段应该用于类的私有内部工作。通常,我很少创建公共字段,同样也很少创建非公共属性。

模板简介:该模板名称为【在 C# 中,是什么使字段与属性不同,何时应使用字段而不是属性?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 265次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-15
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
自适应 微信模板 单页式简历模板 微信图片 微信文章 企业网站 微信公众平台 html5 微信素材 响应式
您可能会喜欢的其他模板