正如标题所示,这两者如何相互区别?我们可以安全地说他们俩一样吗?什么时候我们选择其中一个是最好的情况?我碰巧碰到了它,我不太确定.我希望有人能清除我的怀疑.提前致谢.
Sve*_*ven 13
this.GetType()获取当前实例的多态类型,它实际上可能是您正在调用的类的子类this.GetType(),并且该子类可能位于不同的程序集中.
考虑以下:
AssemblyA.dll:
public class Foo
{
public void PrintAssembly()
{
Console.WriteLine(this.GetType().Assembly.GetName());
Console.WriteLine(Assembly.GetExecutingAssembly().GetName());
}
}
Run Code Online (Sandbox Code Playgroud)
AssemblyB.dll:
public class Bar : Foo
{
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您运行以下代码:
Bar b = new Bar();
b.PrintAssembly();
Run Code Online (Sandbox Code Playgroud)
两种确定装配方式的结果将不一样; this.GetType().Assembly将返回AssemblyB(因为实际的类型this是Bar),而Assembly.GetExecutingAssembly()返回AssemblyA,因为那是包含该Foo.PrintAssembly()方法的程序集.
只有当包含调用的类型this.GetType()被密封时,才能确定它们引用相同的程序集.
| 归档时间: |
|
| 查看次数: |
3038 次 |
| 最近记录: |