A .NET code playground that shows intermediate compilation steps, decompilation, and allows code execution.
SharpLab is a .NET code playground that displays intermediate compilation steps, decompilation results, and allows code execution. It helps developers understand how .NET languages are transformed by the compiler, revealing the underlying implementation of language features. The tool supports C#, Visual Basic, and F#, and can show code as C#, IL, or JIT assembly.
.NET developers, educators, and learners who want to deepen their understanding of C#, VB.NET, or F# compilation and language internals.
It provides unique insight into compiler transformations that typical IDEs don't show, making it an excellent educational tool for understanding .NET language features and their low-level implementations.
.NET language playground
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Shows how language features like `using()` are transformed into lower-level constructs like `try/finally`, providing clear insights into compiler behavior as highlighted in the README.
Supports analysis of C#, Visual Basic, and F# code, allowing developers to compare compilation across different .NET languages, as noted in the languages section.
Allows viewing code as C#, IL, or JIT assembly code, offering a full spectrum from source to native execution, detailed in the decompilation/disassembly section.
Includes experimental run capabilities with output display and flow visualization, enabling practical testing of code snippets, though with limitations as mentioned.
Due to F# compiler complexity, some features are unavailable for F#, restricting its utility, as explicitly admitted in the README.
Code execution is intentionally limited and experimental, not fully reliable for complex scenarios or production use, as stated in the execution section.
VB to C# disassembly produces overly verbose code not suitable for language conversion, a noted limitation in the README that reduces practical utility.