2012-07-18 43 views
2

我已經使用了反編譯器來獲取C#中某些庫的源代碼。一個未知的(對我來說)構建它產生如下:什麼表達式c__DisplayClass9在c#中的含義

Action action = null; 
<>c__DisplayClass9 class2; 
action = new Action(class2, (IntPtr) this.<OptimizeVisuals>b__6); 

之類的東西<>c__DisplayClass9(IntPtr) this.<OptimizeVisuals>b__6我不能神交。另外,這個表達式不能用C#編譯器編譯,所以我需要想出一些更友好的東西。試圖谷歌部分這一點,但沒有運氣。你能給我一些提示嗎?它似乎可以與匿名方法有關,但這是我最好的猜測。

在此先感謝。

編輯:也許我最初的問題不是很清楚我需要做什麼。所以只是爲了重新強調一下:我需要將提到的代碼轉換爲正常的C#代碼,與解編之前一樣。我的任務是改變我正在反編譯的庫中的某些東西,同時保持其他功能(如提到的那個)完好無損。這對我來說非常重要,所以我非常感謝有人能幫助我。

+0

圖書館可能被混淆了。 – Batuu 2012-07-18 15:32:06

+0

看看[這個問題]的答案(http://stackoverflow.com/questions/7357525/empty-before-c-sharp-class-name)。 – Batuu 2012-07-19 14:58:35

回答

5

編譯器爲自動實現的屬性,匿名方法等生成一些成員。爲了防止與您自己的名稱發生衝突,編譯器使用C#中非法的名稱(但在CLR中仍然合法)。

+0

這也計算局部變量。 – Batuu 2012-07-18 15:36:52

+0

好的,很明顯。也許你有一些想法,如何重寫這個表達式,使其成爲合法的,並保持它與原來做的事情相同? – Haspemulator 2012-07-18 15:38:36

相關問題