gpt4 book ai didi

c# - this.GetType().Assembly.GetName().Version 和 Assembly.GetExecutingAssembly().GetName().Version 之间有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 19:58:45 27 4
gpt4 key购买 nike

如标题所示,这两者如何区分?我们可以肯定地说它们是一样的吗?我们什么时候选择一个而不是另一个是最好的情况?我只是碰巧遇到它,我不太确定。我希望有人能消除我的疑虑。提前致谢。

最佳答案

this.GetType() 获取当前实例的多态类型,它实际上可能是您从中调用 this.GetType() 的类的子类,并且该子类可能位于不同的程序集中。

考虑以下几点:

程序集A.dll:

public class Foo
{
public void PrintAssembly()
{
Console.WriteLine(this.GetType().Assembly.GetName());
Console.WriteLine(Assembly.GetExecutingAssembly().GetName());
}
}

程序集B.dll:

public class Bar : Foo
{
}

现在,如果您运行以下代码:

Bar b = new Bar();
b.PrintAssembly();

两种方式判断程序集的结果是一样的; this.GetType().Assembly 将返回 AssemblyB(因为 this 的实际类型是 Bar),而 Assembly.GetExecutingAssembly( ) 返回 AssemblyA,因为这是包含 Foo.PrintAssembly() 方法的程序集。

只有包含对 this.GetType() 的调用的类型是密封的,您才能确定它们指的是同一个程序集。

关于c# - this.GetType().Assembly.GetName().Version 和 Assembly.GetExecutingAssembly().GetName().Version 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8178844/

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