SharpLab 是什么网站?

SharpLab 是一个面向 .NET 开发者的在线编译器实验平台,支持 C#、VB 和 F# 三种语言。你在浏览器里输入代码,它就能实时展示编译器实际生成的产物——包括编译后的 IL 中间代码、JIT 汇编、语法树等。适合想搞清楚"这段代码编译后到底变成了什么"的人,无需在本地安装任何 SDK 或工具链。

它能做什么

SharpLab 的核心价值是把编译过程"透明化"。平时写代码,编译器像一个黑盒:源码进去,程序出来。SharpLab 把这个黑盒打开,让你看到中间每一步。

主要能力包括:

  • 查看 IL 代码:C# 编译后的中间语言,理解编译器如何翻译你的语法糖
  • 查看 JIT 汇编:运行时即时编译生成的机器码,观察性能相关的底层行为
  • 查看语法树:编译器解析源码后得到的结构,理解语言解析过程
  • 多语言切换:同一段逻辑用 C#、VB、F# 分别写,对比编译结果差异

典型使用场景

学习语言特性

想知道 foreach 循环、using 语句、async/await 这些语法糖在底层是怎么实现的?把代码贴进去,切换到 IL 视图,答案一目了然。这比看文档或博客直观得多,因为展示的是当前编译器版本的真实输出。

验证编译行为

怀疑某段代码会被编译器优化掉,或者不确定闭包捕获变量的实际机制?在 SharpLab 里跑一下,看 IL 或汇编就能确认。例如需要判断一个 struct 是否发生了装箱,IL 视图会直接暴露 box 指令。

对比不同写法

同一个功能有多种实现方式,性能可能不同。把几种写法分别放进 SharpLab,对比 JIT 汇编的指令数量和内存访问模式,能帮你做出更有依据的选择。

怎么用

使用流程很直接:

  1. 打开 sharplab.io
  2. 在左侧编辑器输入代码(默认是 C#)
  3. 右侧选择要查看的结果类型:IL、JIT 汇编、语法树等
  4. 代码改动后结果实时更新

不需要注册账号,不需要配置环境。语言切换通过界面上的选项完成,C#、VB、F# 之间可以快速切换。

适合谁

  • C# 学习者:想理解语言特性背后的编译机制
  • 性能调优者:需要看 JIT 生成的汇编来定位热点
  • 语言爱好者:对编译器、IL、运行时行为感兴趣
  • 教学场景:向别人解释编译原理时,用真实输出代替抽象描述

需要注意的地方

SharpLab 展示的是编译产物,不是运行时行为。它能告诉你代码被编译成了什么,但不能直接告诉你程序跑起来后的内存占用、执行时间等运行时指标。要测性能,还需要配合 BenchmarkDotNet 之类的工具。

另外,它适合验证小段代码的编译逻辑,不适合作为完整项目的开发环境。把它当作一个"编译显微镜"来用,而不是 IDE。

sharplab.io
C#/VB/F# compiler playground.