为什么编译器认为这两个类不同?
public class A()
{
}
public class B()
{
}
Run Code Online (Sandbox Code Playgroud)
我觉得这个问题真的很可笑。但我想知道编译器确定它们不同的核心原因是什么。有没有人可以告诉我编译器背面发生了什么。
谢谢你。
这里的概念是“结构类型等价”(https://en.wikipedia.org/wiki/Structural_type_system)。如果两种类型在“结构上”相等,即如果它们具有相同的成员,则某些语言认为它们是相等的。
JScript 使用结构等效。
C#/C++/Java 没有——仅仅因为两种类型具有相同的形状并不使它们等效。关于强类型优于结构等价的一些原因: