怎样提高一个类引用另外一个类的属性的效率

fallincloud 2011-10-18 11:16:24
在一个类(A)中有一个循环需要使用另外一个类(B)的属性(已有个静态的Instance实例),

1.在循环中直接使用那个类(B)的属性
2.还是在循环的外头 放一个局部变量存储那个属性的值
3. 或者还是在该类(A)中使用一个static全局变量存储那个类的属性的值

哪个效率更高?或者还有更好的办法没。(类A会有大量的实例)

当B的属性分别是值类型和引用类型时又有什么区别?
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonespace 2011-10-18
  • 打赏
  • 举报
回复
显然最可靠的是1,无论如何都不会出错,效率稍低,但只要不是瓶颈,1一般不会比23慢,这个你可以通过测试来验证,

如果B属性不会再循环过程中变化,2也可取,很多情况下这也可以得到保证,

不过实测1效率不低的话,应该用1,最简单可靠,
stonespace 2011-10-18
  • 打赏
  • 举报
回复
其实大多数情况下,你这三种方法效率都差不多,

当然理论上3效率最高,1效率最低,因为1调用B的属性,属性是一个方法,涉及调用压栈退栈等操作,1比2/3效率都低,2效率和3接近或者一样,不过2需要在循环外存储这个值,需要分配空间,不过一般在栈中,

值类型和引用类型有区别,但区别不大,

但是你要注意,2和3是有风险的,不一定正确,取决于B的这个属性是不是一个常数,如果B的属性是常数,不会改变,那么23是绝对正确的,如果B的属性会变化,那么3就是错的,除非像2一样处理,在循环钱更新static变量的值,

B属性会变化的情况,2也可能是错的,这取决于B的属性会不会在循环过程中发生变化,

兔子-顾问 2011-10-18
  • 打赏
  • 举报
回复
2
bdmh 2011-10-18
  • 打赏
  • 举报
回复
如果那个属性是动态的,那就要不断的访问,如果是一次不变的,只需读取一次存下来就是了

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧