1

以下に最も近いものは何ですか?残念ながら、以下ではメソッド名のコンパイル エラーが発生します。

int val = delegate(string s)
{
    return 1;
}("test");

(...)=>{...} 構文も試しましたが、非常に間違っていました

4

3 に答える 3

9

両方の形式の無名関数 (ラムダ式と無名メソッド) には、変換先の特定の型が必要です。したがって、これは有効です:

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の回答に従って、コンストラクターのような構文も使用できますが、個人的にはキャストスタイルの構文を好みます。)

于 2013-02-15T14:28:56.767 に答える
5
new Func<string, int>(s => 1)("test")
于 2013-02-15T14:30:38.527 に答える
4

以下はコンパイルされます:

int val = ((Func<string, int>)(s => 1))("test");

しかし、それは私にはあまり役に立ちません。

于 2013-02-15T14:28:49.637 に答える