LinuxでC#を書いてみた(Mono)
Seriesとか、Pythonのジェネレータを触っているとLINQとかと比べたくなる。
しかし家に帰ってまでWindowsを起動したくない。(IPhoneのファームを上げるとき以外は)
ならMonoでも動かしてみるか、と急に思い立った。
取り合えずUbuntuのSynapticパッケージマネージャでmonodevelopを入れる。
よくわからんがmonoの開発するっぽい名前だから。
monodevelopを入れると依存関係で他にも色々はいるみたい。けど細かいことは気にしない。
次はコンパイルの仕方と動かしかた。
コンパイラはgmcsらしい。
最初はやっぱりhello worldかなぁ。
サクッと書く。emacsでC#のコードを書くのはちょっと不思議な感じだ。
やっぱりVisual studioで書く方が楽。
//Hello.cs using System; public class Program { public static int Main(string[] args) { Console.WriteLine("Hello World"); return 0; } }
こんなソースを書いて
gmcs Hello.cs
でコンパイル。成功してHello.exeができる。
実行は
./Hello.exe
でOKみたい。
Hello World
と表示される。
さて。動作確認はとれた。
あとはどこまでできるかだ。そもそもMonoってLINQ通るんかな?(先に調べろ)
//Hello2.cs using System; using System.Collections.Generic; using System.Linq; public class Program { public static int Main(string[] args) { var lst = new List<int>(); lst.Add(1); lst.Add(2); lst.Add(3); lst.Add(4); lst.Add(5); var lst_gt3 = lst.Where(i => i > 3); lst_gt3.ToList().ForEach( i => Console.WriteLine(i)); Console.WriteLine("----------------------------"); var result = from e in lst where e > 3 select e; foreach(var e in result) { Console.WriteLine(e); } return 0; } }
というわけでLINQテスト用。
gmcs Hello2.cs
でコンパイルするとエラーはなし。
./Hello2.exe で 4 5 ---------------------------- 4 5
が出力された。おお。LINQもいける。
いい感じだ。
あとは開発環境だな。なんでかわかんないけどC#はEmacsで書く気になれない。
Eclipseでも入れてみるかな・・・。