LinuxでC#を書いてみた(Mono)

Seriesとか、Pythonのジェネレータを触っているとLINQとかと比べたくなる。
しかし家に帰ってまでWindowsを起動したくない。(IPhoneのファームを上げるとき以外は)
ならMonoでも動かしてみるか、と急に思い立った。
取り合えずUbuntuのSynapticパッケージマネージャでmonodevelopを入れる。
よくわからんがmonoの開発するっぽい名前だから。
monodevelopを入れると依存関係で他にも色々はいるみたい。けど細かいことは気にしない。
次はコンパイルの仕方と動かしかた。
コンパイラはgmcsらしい。
最初はやっぱりhello worldかなぁ。
サクッと書く。emacsC#のコードを書くのはちょっと不思議な感じだ。
やっぱり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でも入れてみるかな・・・。