以下に最も近いものは何ですか?残念ながら、以下ではメソッド名のコンパイル エラーが発生します。
int val = delegate(string s)
{
return 1;
}("test");
(...)=>{...} 構文も試しましたが、非常に間違っていました
以下に最も近いものは何ですか?残念ながら、以下ではメソッド名のコンパイル エラーが発生します。
int val = delegate(string s)
{
return 1;
}("test");
(...)=>{...} 構文も試しましたが、非常に間違っていました
両方の形式の無名関数 (ラムダ式と無名メソッド) には、変換先の特定の型が必要です。したがって、これは有効です:
int val = ((Func<string, int>)(delegate(string s)
{
return 1;
}))("test");
そして、これは次のとおりです。
int val = ((Func<string, int>)(s => 1))("test");
ただし、実際にはどちらも使用することはお勧めしません。別のローカル変数を使用すると、はるかに読みやすくなります。
Func<string, int> del = s => 1;
int val = del("test");
(yBeeの回答に従って、コンストラクターのような構文も使用できますが、個人的にはキャストスタイルの構文を好みます。)
new Func<string, int>(s => 1)("test")
以下はコンパイルされます:
int val = ((Func<string, int>)(s => 1))("test");
しかし、それは私にはあまり役に立ちません。