c# - 一直调用属性或将值赋给变量并使用它

标签 c# performance properties clr

考虑以下类 -

Class A 
{
   CustomObject propertyA {get;set;}
}

在程序的一个方法中,propertyA 是通过 classA 对象使用的,就像这样 -

void Main()
 {
   A a= new A();
   // use of propertyA
   a.PropertyA *****
   a.PropertyA *****
   a.Property.******
 }

如果先将 a.properyA 的值分配给一个变量,然后在所有地方使用该变量,是否会提高程序的性能,或者它只会提高代码的可读性。下面给出的是代码 -

void Main()
 {
   A a= new A();
   var propertyA = a.PropertyA; 
   // use of propertyA
   propertyA *****
   propertyA *****
   propertyA.******
 }

最佳答案

虽然在我的测试用例中添加了两条额外的指令来处理额外的(在我的意见)属性(property)。

也就是说,这很可能是过早的优化,当然不能保证性能得到改善。无法保证 CLR 或 JITter 不会优化分配。

您最好的经验法则是编写可维护、可读的代码,并且只有在您发现性能问题时才担心这些类型的优化。在大多数情况下,编译器或抖动将能够比您开始时更好地进行优化。

关于c# - 一直调用属性或将值赋给变量并使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599058/

相关文章:

c# - session 提醒 (.ICS) 电子邮件附件不考虑时区,即使指定了 UTC 时间

c# - 遍历两个继承类(相同基类)的两个列表

ruby-on-rails - Rails 应用的性能分解

Python 多线程性能 - 使用 C++ 代替?

Ruby - 动态地向类添加属性(在运行时)

c# - (C#) TcpClient 没有连接到 irc 服务器(使用数字 ip)

c# - 切换到 WPF 中的调度程序线程

algorithm - k-way合并中合并和项目数之间的关系是什么

.NET - 什么时候应该使用属性与变量 + 访问器函数?

objective-c - Objective-C ,属性与 ivars