C#のびっくり

ldftnを調べようと思ってとりあえず普段使いもしないくせにC#を書いたら

class A
{
	public static void Main()
	{
		var f = () => 1 + 2;
	}
}

ラムダ式を暗黙的に型指定されたローカル変数に割り当てることはできません
と怒られた・・・
なんやと?なんでや!
Funcって型指定せなあかんの?

試しにVBで普通に書いたら普通に通る

Class A
	Public Shared Sub Main()
		Dim f = Function() 1 + 2
	End Sub
End Class

ILは「ldftn int32 A::_Lambda$__1()」だったので全然問題なかったんだけど頭の中がハテナで一杯
C#どないなっとんねん!


C#ラムダ式おかしいんちゃう?
Func f = (int a) => a + (a > 0 ? f(a - 1) : 0);
ってやると変数xが未割当だから〜って怒られる
どないやって再帰するプログラム組めっちゅうねん


VBは確かvs2010ぐらいから普通にでけてたから、OKなんやと思ってた
Dim f As Func(Of Integer, Integer) = Function(a As Integer) a + If(a > 0, f(a - 1), 0)
DimにAs書かなあかんからめんどくさいねんけど


C#のえらい人にでも聞いてみよか
それにしてもVS2013になってもExpressではF#標準インストールされへんの?可哀想な子
jscがいまだ4.0のフレームワークに入ってるから取って代えたったらええのに