2012-07-18 88 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

相关问题