1

我正在研究我之前在 SO( System.Object 未在 VB.Net 中定义)上看到的一个问题的答案,我发现了一些看起来很奇怪的东西。我一直认为,众所周知,位于“System”命名空间中的“Object”类是在 System.DLL 程序集中定义的,或者至少是在 System.Core.DLL 中定义的。然而,当我开始在对象浏览器中搜索时,我了解到对象实际上是在 mscorlib.dll 中定义的。然而,真正奇怪的是,这个程序集在任何项目的任何地方都没有被引用。为了测试这一点,我创建了一个项目并删除了所有引用:

在此处输入图像描述

令人惊讶的是(至少对我而言)这样做并没有破坏任何东西。我仍然可以写一段这样的代码:

Module Module1
    Sub test()
        Dim x As New Object
    End Sub
End Module

没有任何编译错误。有人可以向我解释一下吗?

4

1 回答 1

4

c# 和 vb 编译器自动包含它

最初我说要查看C# compiler: /nostdlib option,但正如评论中所述,这个问题暗示了一些不正确的事情

mscorlib 总是被引用,不可能不被引用,原因在 CLR 团队之一的帖子中说明

mscorlib.dll 和 System.dll

他们的帖子很容易理解,但总结一下——CLR 和 mscorlib 绑定​​得太紧而无法分离。

于 2013-10-31T22:31:40.173 回答