在C#中,尝试编译以下代码会产生错误,“涉及'A'和'A.B'的循环基类依赖”
public class A : A.B
{
public class B { }
}
但是,我正在通过反编译器查看第三方DLL,并看到这种结构。这怎么可能?我只能假设第三方DLL是用其他一些.Net语言编写的,但是什么语言和语法是什么?
答案 0 :(得分:1)
这是因为您尝试反编译的DLL是"混淆了#34;。混淆器改变了类的所有名称,以便不能反编译反编译器。
答案 1 :(得分:0)
没有DotNet语言可以做到这一点。间接从自身派生子类是错误的,可以创建循环依赖。 从编译器的角度来看,当它尝试编译类A时,首先它需要编译类B,它再次依赖于类A,依此类推。所以它在编译时创建了一个永远的循环。