なんの因果かC#

0 コメント

MS嫌いを自認する私ですが、なんの因果か仕事でC#に「真面目に」取り組んでいます。
まあ、言語としての進化の遅いJavaと比べると、よくも悪くも進化してますね。

でもラムダ式を使えるのはいいけど、scalaのように使いたいな。

object Foo {
  def main(args: Array[String]) {
    println(bar(10, (i) => i % 4))
  }
  def bar(i: Int, f: (Int) => Int): Int = f(i)
}
こういう風に、関数の引数型を書ければよいのですが、C#では
class Foo {
  static void Main(string[] args) {
    Console.WriteLine(Bar(10, (i) => i % 4));
  }
  static int Bar(int i, Func<int, int> f) { return f(i); }
}
こう書かないといけないのかな?Func<T, TResult>使うっていまいちだな。