首页 > C# > C# 公共字段与自动属性

C# 公共字段与自动属性

上一篇 下一篇

我们经常被告知应该通过为类字段创建 getter 和 setter 方法(C# 中的属性)来保护封装,而不是将字段公开给外界。

但是很多时候,字段只是用来保存一个值,不需要任何计算来获取或设置。对于这些,我们都会做这个数字:

public class Book
{
    private string _title;

    public string Title
    {
          get => _title; 
          set => _title = value;
    }
}

好吧,我有一个坦白,我无法忍受写所有这些(真的,它不必写它,它必须看它),所以我变得流氓并使用公共领域。

然后是 C# 3.0,我看到他们添加了自动属性:

public class Book
{
    public string Title { get; set; } 
}

哪个更整洁,我很感激,但实际上,除了做一个公共领域有什么不同呢?

public class Book
{
    public string Title;
}

分割线

网友回答:

在我前段时间的一个相关问题中,有一个链接到杰夫博客上的帖子,解释了一些差异。

属性与公共变量

  • 反射对变量和属性的工作方式不同,因此,如果依赖反射,则更容易使用所有属性。
  • 不能对变量进行数据绑定。
  • 将变量更改为属性是一项重大更改。例如:
    TryGetTitle(out book.Title); // requires a variable
    

分割线

网友回答:

忽略 API 问题,我发现使用属性最有价值的事情是调试。

CLR 调试器不支持数据断点(大多数本机调试器支持)。因此,无法在类上读取或写入特定字段时设置断点。在某些调试方案中,这是非常有限的。

由于属性是作为非常精简的方法实现的,因此可以在读取和写入其值时设置断点。这使他们在田野上占据了很大的优势。

分割线

网友回答:

从字段更改为属性会破坏合约(例如,需要重新编译所有引用代码)。因此,当您与其他类(任何公共(通常受保护的)成员(任何公共(通常受保护)成员)有互动点时,您需要为未来的增长做好计划。为此,请始终使用属性。

今天让它成为自动属性没什么,3 个月后意识到你想让它延迟加载,并在 getter 中放置一个空检查。如果您使用了一个字段,这充其量是重新编译更改,最坏的情况是不可能的,具体取决于谁和什么依赖于您的程序集。

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

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