如何使用 SharpLab 编写和运行代码

SharpLab 是一个 C#/VB/F# 编译器实验场(compiler playground),你可以在浏览器里输入代码,实时查看编译器把它变成了什么。它适合用来验证语法糖、观察 IL、查看 JIT 汇编,或者单纯确认某段代码到底会不会编译通过。需要说明的是,它的定位是"看编译结果",不是运行完整程序并输出控制台结果——如果你期待像在线 IDE 那样跑出 Console.WriteLine 的内容,需要调整预期。

开始前的准备

打开 sharplab.io 即可使用,无需注册或安装。页面主体是一个代码编辑区,语言和输出视图都通过界面上的下拉菜单切换。

基本使用流程

1. 选择语言

在编辑区上方的语言下拉框中选择 C#、VB 或 F#。切换语言后,编辑区会载入对应语言的示例代码,你可以直接在此基础上修改。

2. 输入代码

在编辑区输入或粘贴你想研究的代码片段。SharpLab 会自动触发编译,不需要手动点"运行"按钮。如果代码有语法错误,结果区会显示编译错误信息,这本身就是一种有用的反馈。

3. 切换输出视图

这是 SharpLab 的核心功能。编译完成后,通过结果区上方的下拉菜单切换不同视图,常见的有:

视图 你能看到什么
C# / VB / F# 编译器处理后的等价源码,比如语法糖被展开后的样子
IL 中间语言指令,适合理解编译器的代码生成策略
JIT Asm 经 JIT 编译后的汇编代码,用于观察运行时优化
语法树 解析后的语法结构,适合研究语言解析

不同视图对应编译流程的不同阶段,切换对比能帮你定位"我写的代码"和"机器实际执行的东西"之间的差距。

4. 验证结果

改一处代码,观察对应视图是否按预期变化。例如把 foreach 换成 for,或把 async 方法改写,再对比 IL 输出的差异,就能直观看到编译器做了什么。

常见卡点

  • 看不到运行输出:SharpLab 展示的是编译产物,不是程序运行时的控制台输出。想验证运行结果,需要把代码复制到本地或其它在线运行环境。
  • 代码片段不完整:缺少 using、命名空间或类型定义时可能编译失败,按错误提示补齐即可。
  • JIT Asm 视图为空或异常:该视图依赖特定运行时条件,某些代码形态下可能无法生成,换用 IL 视图通常仍可查看。
  • 语言特性差异:不同语言视图对同一功能的支持程度不同,切换语言时注意示例代码是否仍然适用。

适合的使用场景

  • 学习 C# 语法糖(如 using、lock、foreach、模式匹配)背后的真实实现
  • 对比不同写法生成的 IL 差异,辅助性能相关的判断
  • 调试"这段代码为什么编译不过",快速拿到编译器报错
  • 教学演示时展示编译流程各阶段的产物

把它当作一个"编译器显微镜"来用,而不是一个完整的开发或运行环境,就能发挥它最大的价值。

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