大佬教程收集整理的这篇文章主要介绍了C#Foreach优化与反射,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
// Get these once,create list,re-use same list var prodType = products.GetType(); var fieldInfList = prodType.GetFields(); var propInfList = prodType.GetProperties(); foreach (var p in products) { foreach (var fieldInf in fieldInfList) { fieldInf.SETVALue(this,fieldInf.GetValue(p)); } foreach (var propInf in propInfList) { propInf.SETVALue(this,propInf.GetValue(p)); } }
比这更快:
foreach (var p in products) { foreach (var fieldInf in products.GetType().GetFields()) { fieldInf.SETVALue(this,fieldInf.GetValue(p)); } foreach (var propInf in products.GetType().GetProperties()) { propInf.SETVALue(this,propInf.GetValue(p)); } }
…?
我的想法是,对于第二个块,每个循环将执行再次检查对象的工作,而第一个将具有将在每个循环中持续存在的列表.
与线路类似
var prodType = products.GetType();
该类型只会被检索一次.
或者编译器/ .Net只是在第二个例子中重复使用相同的列表,而我不必做任何事情?如何将创建新列表的开销与重复获取对象属性进行比较?垃圾收集器是否会以不同的方式处理我创建的列表,导致它更长时间挂起?
任何答案或指向正确的方向非常感谢.
以上是大佬教程为你收集整理的C#Foreach优化与反射全部内容,希望文章能够帮你解决C#Foreach优化与反射所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。