![]() |
1
15
反射很慢,因为您正在查询程序集的元数据,而强制转换只是更改您正在引用的对象的类型。 程序集的元数据是一个有用的信息存储库,但最好在 编译时间 而不是在执行时。该元数据由编译器用于静态类型检查(除其他外)。您正在使用相同的元数据在执行时查找类型信息(如果您没有其他选择,这很好),这比强制转换要慢得多。 |
![]() |
2
3
反射必须在运行时进行,并确定对象在运行时具有哪些属性等。强制转换告诉应用程序应该期望对象具有X属性,并且应该以某种方式运行。 |
![]() |
3
2
强制转换告诉运行时您“知道”特定对象的类型。虽然您可能是错的,但运行时相信您,并且不会花费额外的时间来检查程序集的元数据。 |
![]() |
4
1
你为什么不用这个 is operator ? 我认为它更可读,因为您没有显式强制转换,然后检查。它只是检查变量的类型是否正确。
|
![]() |
5
1
|
![]() |
6
0
好吧,我想对最佳实践部分的一个简短回答是,如果你能用常规代码得到同样的结果,就永远不要使用反射。 在优化代码时,通常最好估计优化所花费的时间将在哪里产生最大的性能增益。在语言中以本地方式重新实现操作符很少会排在列表的首位 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
![]() |
Gabe Tucker · 无法在golang中分配接口对象指针 2 年前 |
![]() |
jkone27 · F#-在编译时从字符串生成简单的空类型 6 年前 |
![]() |
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 6 年前 |
![]() |
Randall Flagg · 访问propertyinfo中的属性 6 年前 |
![]() |
Kacper · 在反映的全名和成员c后的“*”中,“+”是什么意思# 6 年前 |
![]() |
tobeypeters · 反射铸造 6 年前 |
![]() |
myst02 · 如何在另一个方法之后调用该方法? 6 年前 |