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

```

    int n = delegate()
    {
        return 10;
    }();
    
```

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

```

    Func<int> f = delegate()
    {
        return 10;
    };
    int n = f();
    
```

変数を介さずに呼ぶことができないと困る、というわけではありませんが、何かしら直接呼べる方法があると少しだけ嬉しいです。他言語の例を挙げると、JavaScript等では前述のコードに似た記述ができますよね。何か良い解決策または代案ありますでしょうか。
CC BY-SA 3.0
2014-12-25T03:58:53.890
2531
2014-12-25T11:23:30.947
2140
question
c#
delegate を変数を介さずに直接実行したい
```

    int n = (new Func<int>(delegate() { return 10; }))();
    
```
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
ラムダ式ですが

```

    var n = new Func<int>(() => 10)();
    
```

も可能です。
CC BY-SA 3.0
2014-12-25T04:14:05.277
2533
2014-12-25T04:14:05.277
3313
2531
answer
```

    var n = ( (Func<int>)( () => 10) )();
    
```

補足: 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