2532


C# にて、以下のように、delegate を変数を介さずに直接実行したいです。

[code]

    int n = delegate()
    {
        return 10;
    }();
    
[/code]

実際には上記コードは構文エラーになるので、以下のように変数を絡める必要があります。

[code]

    Func<int> f = delegate()
    {
        return 10;
    };
    int n = f();
    
[/code]

変数を介さずに呼ぶことができないと困る、というわけではありませんが、何かしら直接呼べる方法があると少しだけ嬉しいです。他言語の例を挙げると、JavaScript等では前述のコードに似た記述ができますよね。何か良い解決策または代案ありますでしょうか。


CC BY-SA 3.0
2014-12-25T03:58:53.890
2531
2014-12-25T11:23:30.947
2140
question
c#
delegate を変数を介さずに直接実行したい

[code]

    int n = (new Func<int>(delegate() { return 10; }))();
    
[/code]


CC BY-SA 3.0
2014-12-25T04:09:36.717
2532
2014-12-25T04:35:37.903
2014-12-25T04:35:37.903
30
4541
2531
answer


ラムダ式ですが

[code]

    var n = new Func<int>(() => 10)();
    
[/code]

も可能です。


CC BY-SA 3.0
2014-12-25T04:14:05.277
2533
2014-12-25T04:14:05.277
3313
2531
answer

[code]

    var n = ( (Func<int>)( () => 10) )();
    
[/code]

補足: delegate構文は、古い構文です。特別な理由が無ければ、ラムダ式を使用すべきでしょう。


CC BY-SA 3.0
2014-12-25T10:18:27.350
2568
2014-12-25T11:23:30.947
2014-12-25T11:23:30.947
728
2207
2531
answer