相关疑难解决方法(0)

.NET反射的代价是多少?

我经常听到反射的糟糕程度.虽然我一般都避免反思,很少发现没有它就无法解决问题的情况,我想知道......

对于那些在应用程序中使用过反射的人,你是否测量过性能命中率,是否真的如此糟糕?

.net c# reflection performance

204
推荐指数
8
解决办法
6万
查看次数

如何通过枚举名称和值名称获取未知枚举的值?

很抱歉提出这个问题,但我找不到适合此任务的解决方案:

我有一个枚举,名为"myEnum"(函数不知道MyEnum)我需要获取myEnum值的int值

示例:
程序员将其枚举命名为"myEnum":

 public enum myEnum
 {
     foo = 1,
     bar = 2,
 }
Run Code Online (Sandbox Code Playgroud)

我的函数应该执行以下操作:通过字符串获取"myEnum"的"foo"值

功能应该打开:

 public int GetValueOf(string EnumName, string EnumConst)
 {

 }
Run Code Online (Sandbox Code Playgroud)

所以当程序员A打开它时:

 int a = GetValueOf("myEnum","foo");
Run Code Online (Sandbox Code Playgroud)

它应该返回1

当程序员B有一个名为"mySpace"的枚举时,想要返回值为5的"bar"

int a = GetValueOf("mySpace","bar")
Run Code Online (Sandbox Code Playgroud)

应该返回5

我怎样才能做到这一点?

c# enums

17
推荐指数
2
解决办法
2万
查看次数

(为什么)反射在.Net中如此昂贵?

可能重复:
反思的"成本"是多少?

有没有人对普遍接受的口头禅有一个很好的解释reflection == bad performance

例如,与直接访问所有属性相比,迭代类型的属性集合并从此类型的实例中提取所有属性值有多昂贵?一个等级?二?它取决于什么?它可以预测吗?引擎盖下发生了什么?

编辑:感谢您的答案到目前为止.我已经研究了你提供的一些链接,似乎与直接访问相比,有关物业反思的估计差距很大:从慢2.5倍到慢200倍.

这对我来说似乎不太合理.有些人提到了.Net的更高版本中的性能改进,所以让我的问题缩小到.Net 4.0.有人有任何基准吗?

.net reflection performance

13
推荐指数
2
解决办法
1621
查看次数

标签 统计

.net ×2

c# ×2

performance ×2

reflection ×2

enums ×1