You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

反编译应用代码时出现未知矩形字符,求解读方法

反编译出现矩形框字符的解读方法

你看到的矩形框是编译器自动生成的匿名状态机类型。原因是你反编译的Flatten方法属于C#迭代器方法(内部用到了yield return或yield break逻辑),编译器会自动为这类方法生成一个隐藏的状态机类来实现迭代逻辑。这个类的名称是编译器生成的特殊命名(包含<>这类不符合常规标识符规则的字符),多数反编译工具无法正确解析显示,就用矩形框作为占位符。

对应的[IteratorStateMachine(typeof())]特性,作用是标记该方法为迭代器,并关联到这个编译器生成的状态机类型。

可以通过以下方式查看真实的类型信息:

  • 使用dnSpy这类更专业的反编译工具,它能正确显示这类编译器生成的类型名称(格式通常类似<Flatten>d__X,X为数字)
  • 若使用ILSpy,在设置中开启「显示编译器生成的代码」选项
  • 直接查看程序集的IL代码,能明确看到这个状态机类型的完整标识

你反编译的代码片段:

public void Add(MessageErrorCode errorCode);

public void Add(SegmentErrorContext segmentContext);

public void AddRange(IEnumerable<MessageErrorCode> errorCodes);

public void AddRange(IEnumerable<SegmentErrorContext> segmentContexts);

[IteratorStateMachine(typeof())]
public IEnumerable<string> Flatten();

public void Sort();

内容的提问来源于stack exchange,提问作者Trent Adams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:39:58