関数を動的に作成し、1 行のコードで呼び出す (関数に値を渡す) ことはできますか?
明確化:匿名関数を作成して直接呼び出すことができる方法を探していました。並べ替え:
delegate(string aa){ MessageBox.show(aa); }("Hello World!");
またはそのようなもの(上記のコードがコンパイルされないことは知っていますが、近いものが欲しかったのです)。
new Action<int>(x => Console.WriteLine(x))(3);
あまり読みにくいですが、あなたの質問に答えると、間違いなくできます。
編集:c#2.0としてタグ付けしたことに気づきました。上記の答えは3.5の場合で、2.0の場合は次のようになります
new Action<int>(delegate(int x) { Console.WriteLine(x); })(3);
は.Invoke
実際には必要ありません。あなたはただ書くことができます:
new Action<int>(x => Console.WriteLine(x))(3);
または C# 2.0 の場合:
new Action<int>(delegate(int x) { Console.WriteLine(x); })(3);
匿名メソッドを確認してください。
匿名メソッドを作成するには、デリゲートを使用します。
delegate(...your arguments...) { ...your code... };
編集:質問が改訂された後、pablitosの回答はより正確になりました。