c# - 为什么需要发出 IL 代码?

标签 c# il intermediate-language

<分区>

我在一个非常大的代码库中工作,今天我发现一个项目在一个普通的 中发出 IL 代码

包含正在发出的 IL 代码的项目是 Service Locator 的实现 MSDN Desctiption .

与使用 C# 语言相比,这样做有什么好处为什么要这样做

最佳答案

通常这样做是为了规避使用反射的开销,使用仅在运行时可用的信息。

然后您将使用反射(根据您的操作可能会很慢)来构建一段新代码,该代码直接处理给定的数据,而不使用反射。

优点:

  • 表现

缺点:

  • 难以调试
  • 很难做到正确
  • 之后很难阅读代码
  • 陡峭的学习曲线

因此,在开始之前,您需要确保它真的物有所值。

请注意,这是一个一般的答案。在您遇到的特定情况下,如果不实际查看代码,就无法回答为什么这样做,也无法回答您会有哪些特定优势(或劣势)。

关于c# - 为什么需要发出 IL 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17946704/

相关文章:

.net - .NET 接口(interface)上的静态构造函数未运行

visual-studio - 学习哪种汇编语言

c# - 使用 System.Drawing.Imaging; System.Drawing中不存在Imaging

.net - .NET编译IL多少次

c# - 获取线程 Cpu 使用率

c# - 为什么 C# -> CIL 在每条指令上都有一个标签?

c# - 为双数组生成 IL

.net - .NET 如何以及何时实际编译代码?

c# - XPath:如何选择节点的第一个给定父节点?

c# - .NET:强制调试器进入属性的属性