なぜ私はこれを持てないのですか?つまり、デリゲート宣言を惜しまないということです。
int X=delegate int(){...};
私はそれがこのようにできることを知っています:
delegate int IntDelegate();
...
IntDelegate del=delegate(){return 25;};
int X=del();
なぜ私はこれを持てないのですか?つまり、デリゲート宣言を惜しまないということです。
int X=delegate int(){...};
私はそれがこのようにできることを知っています:
delegate int IntDelegate();
...
IntDelegate del=delegate(){return 25;};
int X=del();
デリゲートは int ではありません。
.Net 3.5 以降を使用する場合、カスタムを使用する代わりに組み込みの Func を使用できます (文字列にタグを付けて int を返す Func のような引数が必要な場合、Func にはジェネリック型もあります)。
Func<int> X = delegate() { return 255; };
またはラムダ式で:
Func<int> X = () => 255;
残念ながら、次のことは言えません。
var X2 = () => 255;
C# で使用できますが、F# などの関数型言語でも同様のことができます。代わりに、C# では次のように記述します。
var X2 = new Func<int>(() => 255);
トーマス、
これはあなたのために働くでしょうか:
delegate int IntDelegate();
// other stuff...
IntDelegate _del = () => 25;
ジム
[編集] - おっと、今気づきました、問題はそれをワンライナーにすることでした!! - 考えてみます
最初の例では、デリゲートの出力を int に割り当てるのではなく、デリゲート型を int に割り当てようとしているためです。デリゲートは関数を格納する型であり、目的の値をたまたま返します。
デリゲートを作成して実行し、値を返す必要は本当にあるのでしょうか? コードを直接実行しないのはなぜですか?
int x = new Func<int,int>(num => num*num) (3);
9 を返しますが、次のようになります。
int x = 3*3;