Assembly.GetExecutingAssembly()和typeof(程序)之间的区别.Assembly

Rav*_*hik 17 c# c#-4.0

Assembly.GetExecutingAssembly()和之间有什么区别typeof(program).Assembly

Mik*_*der 22

假设program在执行程序集中,它们都应该返回相同的值.但是,typeof(program).Assembly应该有更好的性能,因为Assembly.GetExecutingAssembly()堆栈走路.在我的机器上的微基准测试中,前者花了大约20ns,而后者在大约600ns时慢了30倍.

如果您控制我认为您应该始终使用的所有代码typeof(program).Assembly.如果您提供了其他人可以构建到其程序集中的源代码,则需要使用Assembly.GetExecutingAssembly().


Art*_*nez 8

调用Assembly.GetExecutingAssembly()将返回包含正在调用的方法的程序集Assembly.GetExecutingAssembly()

例如,调用typeof(string).Assembly将返回mscorlib.dll,因为它包含类型String。另一方面,如果您有一个名为MyProject的项目,并且在该项目的某个地方调用Assembly.GetExecutingAssembly()它,它将返回代表MyProject.dll的Assembly实例。

希望这可以澄清。