如何使用 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 差异,辅助性能相关的判断
- 调试"这段代码为什么编译不过",快速拿到编译器报错
- 教学演示时展示编译流程各阶段的产物
把它当作一个"编译器显微镜"来用,而不是一个完整的开发或运行环境,就能发挥它最大的价值。