2013-10-31 16 views
1

我在研究SO(System.Object not defined in VB.Net)上的一個問題的答案,並發現了一些看起來很奇怪的事情。我始終認爲,衆所周知,類「對象」在System.DLL程序集中定義,或至少在System.Core.DLL中定義在「System」名稱空間中。但是,當我開始在對象瀏覽器中搜索時,我發現該對象實際上是在mscorlib.dll中定義的。然而,真正奇怪的是,這個程序集在任何項目中都沒有被引用。只是爲了測試這一點,我創建了一個項目,並刪除了所有引用:對「真實」系統組件的引用在哪裏?

enter image description here

令人驚訝的(至少對我來說),這樣做並沒有破壞任何東西。我仍然可以這樣寫一段代碼:

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

沒有任何編譯錯誤。有人可以向我解釋這一點嗎?

回答

4

的C#和VB編譯器會自動包括它

本來我說看到C# compiler: /nostdlib option,但在評論中指出的這個問題暗示的東西是不是真的

mscorlib中始終參考,沒辦法不是的,原因是這裏由CLR團隊的一個陳述在後

mscorlib.dll & System.dll

他們的崗位是很簡單的理解,但概括起來 - 在一個CLR d mscorlib綁定得太緊而無法分離。

+0

感謝這個信息。我願意接受你的回答,但你鏈接的帖子是誤導性的。根據[MSDN](http://msdn.microsoft.com/en-us/library/79e7wdtc%28v=vs.100%29.aspx)「/ nostdlib」編譯器選項「刪除對系統的自動引用。 DLL」。正如我在問題中所述,Object類是在mscorlib.dll中定義的。在該MSDN頁面上,有一個提示說「總是引用Mscorlib.dll和Microsoft.VisualBasic.dll程序集」,但我仍然很想知道原因。你能否更新你的答案,以便解釋原因? –

+0

@ roryap好,這讓我在意外的旅程 - 雖然有趣! –

+0

完美。這絕對有趣並且很好​​知道。謝謝你的幫助。 –

相關問題