Visual Studio 2012、ASP.NET MVC 4、および Razor ビューを使用しています。次のコードを検討してください。
@{
Action<Action<int>> fun = x => { x(42); };
fun(x => { PrintX(x); }); // This is OK
fun(x => { var z = PrintX(x); }); // This produces error
// "Argument 1: cannot convert from 'lambda expression' to
// 'System.Action<int>'"
}
@helper PrintX(int x) { <div>@x</div> }
どういうわけかvar z =
、ラムダ関数の内容に文字を追加すると、正しい型にキャストできなくなります (実際には、その関数の値を取得するどの形式でもこれが得られます)。
ただし、このエラーは IntelliSense によってのみ生成されます。実行時に動作します。
何を与える?