2011-03-29 37 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#代码中,你可以肯定的是,它是编译器生成的。