始终调用属性或将值赋给变量并使用它

本文关键字:变量 调用 属性 | 更新日期: 2023-09-27 18:12:50

考虑以下类-

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

在程序中的方法中,propertyA通过类a对象使用,如下所示-

void Main()
 {
   A a= new A();
   // use of propertyA
   a.PropertyA *****
   a.PropertyA *****
   a.Property.******
 }
如果首先将a.p properya的值赋给一个变量,然后在所有地方使用该变量,那么

是否会提高程序的性能,或者它只会提高代码的可读性。下面是代码-

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

始终调用属性或将值赋给变量并使用它

根据您的上下文和使用情况,生成的IL的性能可能会有非常小的改进,尽管在我的测试用例中添加了两个额外的指令来处理额外的(在我看来是不必要的)属性。

也就是说,这很可能是一个不成熟的优化,当然也不能保证性能的提高。不能保证CLR和JITter不会优化分配。

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