gpt4 book ai didi

c# - Assembly.GetAssembly(类型)与类型.Assembly

转载 作者:行者123 更新时间:2023-11-30 17:11:38 29 4
gpt4 key购买 nike

我想知道调用这些方法中的任何一个有什么好处(如果有的话),为什么?
它们在功能上是否相同,还是我应该始终选择一个而不是另一个?

最佳答案

据我所知,它们在功能上是等效的,但是 Assembly.GetAssembly(Type) 在 core-clr(Silverlight 等)中不可用

根据您的 Type 是否为空,您会得到不同的错误。 Type.Assembly 将抛出 NullReferenceException(自然地),而 Assembly.GetAssembly(Type) 将抛出 ArgumentNullException。根据您的代码,您可能更喜欢其中之一。

编辑:查看源代码,对于 Assembly.GetAssembly:

public static Assembly GetAssembly(Type type)
{
if (type == null)
throw new ArgumentNullException("type");
Contract.EndContractBlock();

Module m = type.Module;
if (m == null)
return null;
else
return m.Assembly;
}

鉴于 System.Type.Assembly:

public abstract Assembly Assembly {
get;
}

如果我没记错的话,运行时类型的 System.Type 是它们自己的子类(或类似的东西)所以我猜每个人都可能会覆盖并直接返回一个程序集引用。除此之外,我认为除了由您决定的空处理之外,您不必担心您的代码有任何重大差异。 (或者,如果您正在运行 Core-CLR,在这种情况下您无论如何都没有 Assembly.GetAssembly,因此您必须使用 Type.Assembly)

关于c# - Assembly.GetAssembly(类型)与类型.Assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264060/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com