より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

C#を手軽に書いて動かしたい時に.Net Fiddle

C#にはVisual StudioというIDEがあるとはいえ、試しにこんなコードを書いてみたいという場合にはプロジェクトを新規作成したりしなければならないなど、手間です。

PaizaでもC#には対応してますが、言語に最適化していないため物足りない。

StackBlitzとかScatieのように、C#専用でOnline上で動かせるエディタないの?

と探したら、見つけたのがこれ。

C# Online Compiler | .NET Fiddleです。

開いて、目を引くのはNuGet Packageでしょう。

f:id:rimever:20190223222807p:plain
NuGet Package

いいですね。.NET言語に特化したエディタならではでしょう。

CsvHelperを使って、下記のようなコードを書いてみることにしました。

using System;
using System.Net;
using CsvHelper;
using System.Collections.Generic;
using System.Text;
using System.IO;

public class Program
{
    public static void Main()
    {
        string url = "https://raw.githubusercontent.com/chainer/chainer/master/examples/glance/mushrooms.csv";
        WebClient client = new WebClient();
                 string html = client.DownloadString(url);
        using(var textReader = new StringReader(html)) {
            using(var reader = new CsvReader(textReader)) {
                while (reader.Read()) {
                                   var dictionary = reader.GetRecord<dynamic>() as IDictionary<string, object>;
                                           var stringBuilder = new StringBuilder();
                                           foreach (var pair in dictionary)
                      {
                        stringBuilder.Append(pair.Key + "->" + pair.Value + ",");
                      }
                                   Console.WriteLine(stringBuilder.ToString());
                }
            }
        }
    }
}
  1. 直接、Web上のcsvファイルにアクセス
  2. 取得した文字列をCsvHelperが引数に取れるStringReaderへ変換
  3. CsvHelperでマッピングなしの読み込み
  4. コンソール出力

というコードです。

書いていて気づいたのですが、.NET Framework v4.5であること。これは変更できないようです。

最新版のCsvHelperがバージョン依存により、動作しませんでした。

f:id:rimever:20190223231400p:plain

その他の機能

  • アカウント作成はTwitter/Facebook/Gmail
  • VB.NETのコードに変換が可能
  • F#も実は書ける
  • Fiddleとして保存可能
  • MVCなんてのも書くことができる。

機能は豊富ですし、良いのですが、WebClientクラスの名前空間なんて覚えてるわけないので、自動的に補完してくれないのがストレス。

それくらいであれば、Visual Studio使えよ、なのかも。

共通ライブラリは、自動的にサジェストして補完してくれるといいなーとは思いました。