JavaScriptでは、自己呼び出し関数が表示されることは珍しくありません。
var i = (function(x) {
return x;
})(42);
// i == 42
私は確かに言語を比較していませんが、サポート付きの言語バージョンを提供すれば、そのような構成はC#に翻訳可能であると考えました。
var i = (delegate(int x) {
return x;
})(42);
または:
var i = ((x) => {
return x;
})(42);
あるいは:
var i = (x => x)(42);
ただし、すべてのバージョンにエラーがあります。
メソッド名が必要です
自己呼び出しの匿名メソッドはサポートされていませんか(明示的な禁止、または型推論の不可能性のため)、または私の試みにエラーがありますか?
型を推測できるメソッド宣言(Func<T,T>
)がなかったため、暗黙の型、宣言されたメソッドを名前で呼び出すことを意図した図を分類できず、構文を実際に間違えたと推測しています。 。
エラッタ
この質問が殺到する前に:
var i = new Func<int, int>(x => x)(42);
私は型推論を活用したいと思っていたと言うべきですが、過度に暗黙的であるため、それは不可能かもしれないと思います。
それで、質問を少し明確にします。できることはわかってvar i = new Func<int, int>(x => x)(42);
いますが、のインスタンスを作成したり、キャストしたりしなくてもFunc
、これは可能ですか?
使用事例
好奇心旺盛な(または懸念している)人にとって、ユースケースは次のようなものでした。
var o = new {
PropertyA = () => {
// value computation
}(),
PropertyB = () => {
// value computation
}(),
};