我已經學習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);
,並在許多其他的方法/過載這些類,知道什麼去做?我猜測編譯器有這方面的一些信息,但這只是一個猜測。我甚至正確地調用這些方法嗎?他們似乎都做東西來一個字符串,但怎麼樣?這個邏輯來自哪裏?
你需要ReSharper的或其他一些反編譯器看到的方法 –
他們不是空的源代碼的頂部,您只是沒有源代碼(或pdb文件)來查看它們包含的內容。它們已經被編譯(從源代碼轉換爲機器代碼),所以你只能看到元數據,而不是源代碼。如果您從符號服務器加載符號,反編譯或查看源代碼(.Net現在是開源代碼),您將能夠看到它們的功能。 – Liam
您也可以在[referencesource.microsoft.com](http://referencesource.microsoft.com/#mscorlib/system/string.cs,8281103e6f23cb5c)上看到源代碼。 – Dmitry