【发布时间】:2015-02-04 20:36:55
【问题描述】:
我正在使用 dotPeek 深入了解 C# 编译器的魔力,反编译代码中的某些内容引起了我的注意。我正在创建一个Action<int> 实例并将其传递给Start() 方法,编译器生成以下内容:
new Program().Start(new Action<int>((object) cDisplayClass1, __methodptr(<Main>b__0)));
我大致了解这里发生了什么,我唯一的问题是 __methodptr 是什么?确切地说,它来自哪里?是来自伊利诺伊吗? dotPeek 对它或包含它的程序集一无所知。谷歌也没有给出确切的答案,只给出相同的 sn-ps 代码,没有任何解释。
谢谢!
【问题讨论】:
-
这是反编译器中的一个错误。程序集是由 Roslyn 编译的吗?
-
任何认为他们需要混淆器的人没有编写足够的匿名委托、迭代器、lambda 表达式、Linq 和异步方法。那种不受反编译影响的代码。 Afaik,dotPeek 通常还会发出
// ISSUE: method pointer评论以警告您它放弃了。
标签: c# delegates decompiling