2011-03-29 39 views
2

我反映了一個C#DLL,我看到一個內部靜態只讀$ArrayType$16008有人可以告訴我這是什麼?

[StructLayout(LayoutKind.Explicit, Size=16008, Pack=1)] 
public struct $ArrayType$16008 
{ 
} 

編譯器是否生成它?或者它是反射器無法看到的UserDefined類型?

+1

給出'16008'的外觀我會說由反射器生成....超越,我不知道我們應該幫你反編譯DLL,如果它不是你的... – 2011-03-29 11:02:35

+4

當你初始化一個足夠大使用System.Runtime.CompilerServices.RuntimeHelpers.InitializeArray(),C#編譯器將生成一個這種大小的類型並使用該類型的一個實例來初始化該數組。可能是因爲它比按元素初始化數組元素快。它可能是你看到的那些類型之一。 – 2011-03-29 11:42:18

+1

我隱約記得生成這種類型的C++/CLI編譯器。 – Ani 2011-03-29 12:36:21

回答

0

正如評論者所說。編譯器生成它。

只要你看到在字符串外面使用美元符號,在反向工程的c#代碼中,你可以肯定的是,它是編譯器生成的。