2015-10-06 35 views
1

我已經學習C#大約一年了。感謝Visual Studio的「轉到定義」選項,我最近注意到System.String類充滿了空方法;他們沒有方法組織說「做某事」。在C#System.String類中的空方法(以及其他)

做了一些搜索之後,我找不到一個很好的答案來說明這是如何工作的。我最初的想法是其他類繼承System.String並重寫這些方法,但類是sealed。根據MSDN:

sealed修飾符防止其他類從它繼承。

那麼,如何在課堂上做方法,如System.String,如

  • public bool StartsWith(string value);

  • public int LastIndexOf(char value, int startIndex, int count);

,並在許多其他的方法/過載這些類,知道什麼去做?我猜測編譯器有這方面的一些信息,但這只是一個猜測。我甚至正確地調用這些方法嗎?他們似乎都做東西來一個字符串,但怎麼樣?這個邏輯來自哪裏?

+4

你需要ReSharper的或其他一些反編譯器看到的方法 –

+2

他們不是空的源代碼的頂部,您只是沒有源代碼(或pdb文件)來查看它們包含的內容。它們已經被編譯(從源代碼轉換爲機器代碼),所以你只能看到元數據,而不是源代碼。如果您從符號服務器加載符號,反編譯或查看源代碼(.Net現在是開源代碼),您將能夠看到它們的功能。 – Liam

+4

您也可以在[referencesource.microsoft.com](http://referencesource.microsoft.com/#mscorlib/system/string.cs,8281103e6f23cb5c)上看到源代碼。 – Dmitry

回答

2

你看到的不是String類的源代碼,它是metadata。這與Intellisense所展示的信息相同。

如果你想看到String類的源代碼,這是available online

2

當你跳轉到上,你並不擁有/控制的一類,然後Visual Studio會告訴你它的元數據。基本上是班級同意的合同,類似於它具有界面。

如果您好奇它在做什麼,可以下載ILSpy來查看實際的實現。該DLL與ILSpy反編譯的位置是給你的元數據視圖的VS

metadata extracted from dll

相關問題