私がJava(経験10数年)とC#(経験1年程度)で戸惑った内容です。
特に驚いた違いとしては、ラムダ式とLinqの違いです。
記述方法が似ていたので、同じようなものだと思っていたので、、、
簡単な例になります。
【Java】
List<int> list = Arrays.asList(1, 2, 3);
int ret = 0;
list.forEach(s -> {
ret += s;
System.out.println(ret);
});
⇒ラムダ式の外にある変数に代入したくなるが,できない。
ラムダ式はコンパイルするとprivate staticなメソッドとして置き換わるため,変数への代入は出来ないとのこと。
【C#】
List<int> list = new List<int>(1, 2, 3);
int ret = 0;
list.Foreach(s => {
ret += s;
Console.WriteLine(ret);
});
⇒Linqの外にある変数にも代入できる。
言語の違いになれるまでまだまだ勉強の日々です。