我有一个关于表现的问题,我很好奇。如果做得更好(表现,而不是意见明智):
foreach (var Obj in SomeData.GetType().GetProperties())
{
// Do work
}
或者应该做一些类似下面的事情?
List<object> DataProperties = SomeData.GetType().GetProperties();
foreach (var Obj in DataProperties)
{
// Do work
}
(也可以是(int i = 0; i&lt; [Object] .Count; i ++),我不确定这是否会影响性能,只要使用索引与对象本身相比)< / p>
我会假设.GetType()。GetProperties()枚举器每次调用它会花费一些开销,但是它会创建比创建列表和枚举对象属性一次更多的开销吗?或者最后(大规模)可变性能差异是否小到任何一种方式都可以?
我很感激反馈!
答案 0 :(得分:1)
这些是相同的。表现没有差别。 System.Type.GetProperties()返回PropertyInfo[]
,而不是List<object>
。从List<object>
构建PropertyInfo[]
比较昂贵,例如DataProperties = new List<object>(SomeData.GetType().GetProperties());
会有额外的开销。