0

当您连续多次访问对象属性时存储它会更好吗?下面是一个相当愚蠢的示例,它连续多次获取对象属性以及处理它的两种方式。如果您连续多次访问对象属性,那么示例是一种好习惯吗?或者编译器无论如何都能够优化这些东西并且它会导致几乎相同的结果?

  private string example1()
  {
    string prop = SomeObject.prop;
    StringBuilder builder = new StringBuilder();
    for(int i = 0; i < 9000; i++;){
       builder.Append(prop);
    }
    return builder.ToString(); 
  }
private string example2(){
  StringBuilder builder = new StringBuilder();
  for(int i = 0; i < 9000; i++;){
    builder.Append(SomeObject.prop);
  }
  return builder.ToString();
}

}

如果第一个示例更好,那么当您担心对象在返回属性之前执行某些操作时是否更好

 class SomeObject{
        public string prop
        {
            get {
                //Do something wierd
                return _prop;
            }
            set {
                _prop = value;
            }
        }
}

或者即使您知道财产将立即归还,还是使用它会更好?我很好奇编译器是否足够聪明,可以自动优化这些东西。

4

2 回答 2

0

Storing it in a variable is most often going to store a refrence to it, so theres really no point. You're still pointing to the same thing.

于 2013-05-18T10:23:33.860 回答
0

编译器不会“优化”它,因为它不控制属性的值是否在调用之间发生变化。在这种情况下,局部变量不会改变,但属性可能会改变。

于 2013-05-18T10:19:43.907 回答