我正在研究我之前在SO(System.Object not defined in VB.Net)上看到的一个问题的答案,我发现了一些看似奇怪的东西。我一直认为,众所周知,类“Object”驻留在“System”命名空间中,是在System.DLL程序集中定义的,或者至少在System.Core.DLL中定义的。但是,当我开始在对象浏览器中搜索时,我了解到对象实际上是在mscorlib.dll中定义的。但是,真正奇怪的是,这个程序集在任何项目的任何地方都没有被引用。为了测试这个,我创建了一个项目并删除了所有引用:
令人惊讶的是(至少对我来说)这样做并没有破坏任何东西。我仍然可以像这样编写一段代码:
Module Module1
Sub test()
Dim x As New Object
End Sub
End Module
没有任何编译错误。有人可以向我解释这个吗?
答案 0 :(得分:4)
c#和vb编译器自动包含它
最初我说要看C# compiler: /nostdlib option,但正如评论中所述,这个问题意味着某些事情并非如此
mscorlib总是被引用,没有办法,并且其中一个原因在CLR团队的帖子中说明了原因
他们的帖子很容易理解,但总结一下 - CLR和mscorlib太紧密,不能分离。