当您连续多次访问对象属性时存储它会更好吗?下面是一个相当愚蠢的示例,它连续多次获取对象属性以及处理它的两种方式。如果您连续多次访问对象属性,那么示例是一种好习惯吗?或者编译器无论如何都能够优化这些东西并且它会导致几乎相同的结果?
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;
}
}
}
或者即使您知道财产将立即归还,还是使用它会更好?我很好奇编译器是否足够聪明,可以自动优化这些东西。