![]() |
1
4
第一种情况几乎总是更快。然而,它的性能来自这样一个事实,即它可以在编译期间提前绑定,但这也是它最大的缺点:例如,这种方法不能处理动态加载的程序集,而且它更容易出错,因为它是必需的而不是声明性的。(例如,忘记新执行的操作是一件很快就会发生的事情。) 我通常的方法是在发现期间使用反射来实现这种模式,但在调用时使用委托。这使得反射方法的灵活性与性能非常接近于早期绑定方法。
|
![]() |
2
3
使用代理怎么样?你可以用这样的方法:
以后
我想如果你有很多情况的话,这样做会更好,因为字典有散列查找。 如果用户可以提供另一个函数名,则使用的反射类型可以创建安全问题。 |
![]() |
3
2
性能不应该成为您的关注点,除非您分析它并且它是一个瓶颈。更重要的是,IMO,在反射版本中会丢失静态类型安全性和分析。在编译时无法检查这些操作方法
此外,操作的数量对于反射版本的性能是完全不相关的。
|
![]() |
4
2
您可以修复@user287107的答案:
这实际上是在执行@lucero答案的发现阶段,如果名称不总是匹配,这可能很有用。 如果可能的话,在枚举中定义一组操作也是很好的——这将稍微快一点,因为您不需要散列字符串。它还可以让您编写一个单元测试,以确保没有遗漏任何潜在的值。 |
![]() |
ZenBa2 · getopt未更改值C 3 年前 |
![]() |
Waeez · 条件未满足php仍在运行 7 年前 |
![]() |
Catz · 正在尝试打印正确数量的“*”以代替数值 7 年前 |
|
privilegedMale · switch语句中的扫描仪问题 7 年前 |
![]() |
rasilvap · 具有多个参数的开关箱 7 年前 |
![]() |
RudziankoÅ · 不可能的类型切换情况:不能有动态类型 7 年前 |
![]() |
Leo Thomas · 循环case语句而不退出shell脚本 7 年前 |