暗黙的に型指定されるラムダ式Implicitly typed lambda expressions

暗黙的に型指定される変数宣言を使用してラムダ式を宣言することはできません。You can't use an implicitly typed variable declaration to declare a lambda expression. そうした場合、コンパイラの循環論理問題が発生します。It creates a circular logic problem for the compiler. var 宣言は、代入演算子の右辺にある式の型から変数の型を推論するようにコンパイラに指示するものです。The var declaration tells the compiler to figure out the type of the variable from the type of expression on the right hand side of the assignment operator. ラムダ式はコンパイル時の型を持ちませんが、任意の一致するデリゲートまたは式の型に変換できます。A lambda expression does not have a compile time type, but is convertible to any matching delegate or expression type. デリゲートまたは式の型の変数にラムダ式を代入すると、"代入先の" 変数のシグネチャに一致する式またはデリゲートにラムダ式を変換するようコンパイラに指示することになります。When you assign a lambda expression to a variable of a delegate or expression type, you tell the compiler to try and convert the lambda expression into an expression or delegate that matches the signature of the 'assigned to' variable. コンパイラは、代入の右辺の値を代入の左辺の型に一致させることを試みる必要があります。The compiler must try to make the thing on the right hand side of the assignment match the type on the left hand side of the assignment.

代入の左右どちらの側でも、代入演算子の反対側の辺のオブジェクトを調べて型が一致するかどうかを判断するようコンパイラに指示することはできません。Both sides of the assignment can't be telling the compiler to look at the object on the other side of the assignment operator and see if my type matches.

C# 言語でこの動作が指定されている理由については、この記事を参照してください (PDF ダウンロード)。You can get even more details on why the C# language specifies that behavior by reading this article (PDF Download)