【发布时间】:2014-07-15 14:11:21
【问题描述】:
受 JavaScript 闭包的启发,我尝试使用 Func Delegate 在 C# 中模拟局部静态变量... 这是我的代码..
public Func<int> Increment()
{
int num = 0;
return new Func<int>(() =>
{
return ++num;
});
}
Func<int> inc = Increment();
Console.WriteLine(inc());//Prints 1
Console.WriteLine(inc());//Prints 2
Console.WriteLine(inc());//Prints 3
我很想知道在 C# 中是否有任何其他方法可以模拟局部静态变量? 谢谢。
【问题讨论】:
-
创建静态变量的 C# 方法实际上是创建一个具有
static成员的类。这感觉就像你在问“我怎样才能让 C# 表现得像 Javascript?”我认为答案应该是“不要”。它们是两种不同的语言,强迫一种语言表现得像另一种语言只会以泪水告终。 -
@Uthaiah 在什么方面表现得像
static变量?static变量属于 class,this 属于实例。这绝对不等同于static变量。 -
对,但他正在尝试模拟 函数范围的静态变量,就像你在 C++ 中找到的那样 -
function() { static int = 0; .. } -
好吧,我真的明白现在要问什么了。对于其他感到困惑的人,请参阅stackoverflow.com/questions/1049689/… 和 AlfredBr 的回答
-
我不会认为这是另一个问题的重复,它要求不同的东西并且可能的答案也不同。
标签: c# javascript .net