来自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
}
答案 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
}