.net - 在读/写操作中,属性与支持字段之间是否存在性能差异?

标签 .net performance properties backing-field

当在一个类中处理它自己的字段和属性时,我通常只在它执行某些功能时才使用该属性(比如限制一个值或验证或其他)。否则我更喜欢直接读/写支持字段。

我以某种方式想到这将是一种更普遍的执行方式,但我突然想到我没有任何证据支持这个想法。

除了惯例或品味之外,一种方法和另一种方法之间是否存在实际性能因素?

最佳答案

如果属性是直接获取/设置它的编译 - 换句话说,编译器会将使用属性或字段直接变成相同的东西 - 所以没有性能差异。

但是,get/set 可以包含他们想要的任何逻辑,因此可能很昂贵 - 然而,指南通常建议保持轻量级。

属性有一些好处,即使它们只是获取/设置封面:

  • 数据绑定(bind)只能看到属性,不能看到字段。
  • 它符合封装的概念。
  • 您可以强制只读或只写语义。
  • 您可以将属性单独应用于基础字段(在序列化场景中很有用)。

顺便说一句,虽然审查这些东西的微小性能特征很有趣 - 在应用这种类型的优化的生产代码中(好吧,在这种情况下没有)可能 处于过早优化的旗帜下。

关于.net - 在读/写操作中,属性与支持字段之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167133/

相关文章:

c# - 事件触发前的对象处理和垃圾收集

c# - 在 List<string> 中查找重复项

Javascript - 连接字符串/变量时使用 + 和 之间的区别?

java - 指向属性文件中的文件夹和文件的更好方法?

c# - 防止C#中的重复代码

c# - 遍历数组 - 获取所有其他项目?

mysql - 内存数据库和磁盘内存数据库的区别

performance - 为什么交叉应用比内连接快?

ios - iOS >>为什么我无法进入UIView.layer.properties?

java - CDI 世界中的@Value 是什么?