【发布时间】:2012-01-05 19:27:27
【问题描述】:
在javascript中,通常使用闭包并创建然后立即调用匿名函数,如下所示:
var counter = (function() {
var n = 0;
return function() { return n++; }
}());
由于强类型,这在 C# 中非常冗长:
Func<int> counter = ((Func<Func<int>>)(() =>
{
int n = 0;
return () => n++;
}))();
在 C# 中是否有更优雅的方式来处理这类事情?
【问题讨论】:
-
Func<int> counter可能是var counter,但想不出别的了。请注意,counter仍然是强类型的。 -
作为旁注,冗长不仅仅是由于强类型。在 F#(与 C# 一样是强类型)中的相应代码中,您不必声明任何类型。