C# - 你需要像在 JavaScript 中那样缩短查找链吗?

标签 c# .net

我有一个具有公共(public)属性的类。在单个函数中,我引用此属性大约 30-40 次。

  this.MyProp; 

在函数中定义一个局部变量会不会更好,

 string myProp = this.MyProp;

这样做之后 - 在函数中我缩短了查找链...所以我只需要引用 myProp,而不是 this.MyProp。

在 JavaScript 中,这种查找的缩短确实提高了性能。在 C# 中会更好/更差吗?因为显然,我还需要创建另一个本地字符串变量。

最佳答案

从纯粹的性能角度来看,这取决于媒体资源在做什么。如果 MyProp getter 只返回一个私有(private)字段,那么开销是完全无关紧要的。事实上,除非您显然正在做一些重要的事情,比如一些巨大的枚举或调用数据库,否则这无关紧要。担心这个是微观优化。

不过,请务必注意属性的用途,即强制通过封装的例程访问值以确保一致性。如果您试图绕过它,您的代码将面临更大的错误风险。

来自@DavidAndres 的评论:

根据惯例,属性通常不应在 getter 或 setter 中做任何实质性的事情。所以我想说,如果您只是通过反射器或文档或查看您自己的代码来验证该属性是否运行良好,这无关紧要。在验证有必要后,处理显然需要本地化值的情况应该是边缘情况。

编辑:明确地说,我不建议您出于任何性能原因通常避免局部值。作为@Guffa注意到影响是微不足道的无论哪种方式。我要指出的是,属性通常是属性是有原因的,默认情况下访问值应该通过属性。

关于C# - 你需要像在 JavaScript 中那样缩短查找链吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415763/

相关文章:

c# - 提取基类的工具?

c# - 如何制作文章微调器正则表达式?

.net - 如何在 .NET 中调整 MS 图表的 x 轴标签的位置?

c# - 动态对象属性名以数字开头

c# - 在 C# 中从 Windows Media Player 上播放的视频中获取图像

.net - 为什么在不通过 Interop 类的情况下从 .NET 访问 COM 对象有时会起作用?

c# - 如何在打开另一个 Winform 时关闭一个 Winform

c# - 如何将参数从 parentViewModel 传递到我的 ViewModel?

c# - 带有关闭按钮的自定义对话框 Mahapps ShowMetroDialogAsync

c# - LINQ - 为匿名类型的只读属性赋值