从代码块中分配结果变量?

时间:2017-07-03 22:55:31

标签: c#

来自Scala学习C#,我无法弄清楚如何在C#中做到这一点。也许它不受支持?我习惯于在较大的代码中封装小代码块计算的巧妙构思,特别是对于变量初始化。洞见表示赞赏,或许有一个模仿这个的伎俩。谢谢!

var calc =        //invalid example wont compile
            {
                int x = 3; //x will not escape scope
            //do something, etc.
                return x; //assigned to calc as init 
            }

2 个答案:

答案 0 :(得分:3)

我不确定Scala概念,但AFAIK你不能在c#中做到这一点。相反,您可以通过以下方式使用名为Func的内置返回类型委托:

Func<int>  calc = () => { 
  int x = 3; //x will not escape scope
            //do something, etc.
                return x; //assigned to calc as init 
 }; 

现在,您可以通过calc()调用上面的委托。

答案 1 :(得分:1)

不确定这是不是你想要的,但你可能应该看看lamba表达式:

var calc =  () => 
        {
            int x = 3; //x will not escape scope
        //do something, etc.
            return x; //assigned to calc as init 
        }