Visual Studio で C# の REPL - C# Interactive - を使う

Java 10 の JShell 使ってて Java が可愛く思えてきたので、C# にも REPL ないのかなーと見てみたら CSI というのがありました。

C# Interactive Walkthrough · dotnet/roslyn Wiki · GitHub

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn\csi.exe が本体のようです。Visual Studio 2015 から追加されたようです。知りませんでした。

開発者コマンドプロンプトから csi と叩けば使えますが、コマンドプロンプトで C# のコード書くのはちょっときびしいので Visual Studio で

表示 -> その他のウィンドウ -> C# インタラクティブ

でリッチなシェルが起動します*1。プロジェクトを開いてない状態でも使えます。

f:id:kondoumh:20180402173118p:plain

IntelliSense も効きますしコードが正しく評価されると整形もしてくれます。裏で JIT でコンパイルしてるっぽく、ちょっともっさり感ありますが、なかなか素敵なツールです。

f:id:kondoumh:20180402173137p:plain

このように LINQ の式を試す時など特に便利そうです。昔から LINQPad というツールがあって、LINQ to Entitis の Playground として使えますが、CSI は Visual Studio に付属しているので気軽に使えますし LINQ 以外の機能も試せます。

macOS や Linux でも使える .NET Core の環境にはまだ、CSI がポーティングされていないようで GitHub に Issue がありました。

github.com

IntelliSense 付きの CSI シェルが VS Code の統合ターミナルで動くといいですね。Language Server Protocol で拡張機能を作る感じかな。

言語サーバー プロトコル拡張機能を追加する - Visual Studio | Microsoft Docs

*1:F# Interactive というのもありますね。