是否可以在c#中使用本地作用域进行变量?

时间:2014-05-02 07:30:55

标签: c# scala scope

Scala我可以这样做:

val result = {
  val a = 4
  val b = 16
  a + b
}

这基本上只是一个(在这种情况下是不可变的)变量,它有一个像方法一样的本地范围。

然而,以下表达式在C#

中完全违法
var result = 
{
    var a = 4;
    var b = 16;
    return a + b;
}

所以问题是,有没有什么方法可以模仿这个功能,而不必被迫制作Func或单独的方法?

2 个答案:

答案 0 :(得分:4)

我的建议是:

var result = 0;
{
  var a = 4;
  var b = 16;
  result = a + b;
}

答案 1 :(得分:3)

为避免结果是委托,您可以在实例化后立即调用Func

var result = new Func<int>(() => {
    var a = 4;
    var b = 16;
    return a + b;
})();