Assembly.GetExecutingAssembly()
和之间有什么区别typeof(program).Assembly
?
Mik*_*der 22
假设program
在执行程序集中,它们都应该返回相同的值.但是,typeof(program).Assembly
应该有更好的性能,因为Assembly.GetExecutingAssembly()
堆栈走路.在我的机器上的微基准测试中,前者花了大约20ns,而后者在大约600ns时慢了30倍.
如果您控制我认为您应该始终使用的所有代码typeof(program).Assembly
.如果您提供了其他人可以构建到其程序集中的源代码,则需要使用Assembly.GetExecutingAssembly()
.
调用Assembly.GetExecutingAssembly()
将返回包含正在调用的方法的程序集Assembly.GetExecutingAssembly()
。
例如,调用typeof(string).Assembly
将返回mscorlib.dll,因为它包含类型String
。另一方面,如果您有一个名为MyProject的项目,并且在该项目的某个地方调用Assembly.GetExecutingAssembly()
它,它将返回代表MyProject.dll的Assembly实例。
希望这可以澄清。
归档时间: |
|
查看次数: |
25054 次 |
最近记录: |