也就是说,在C语言中,我们可以定义如下函数:

func(){
  static int foo = 1;
  foo++;
  return foo;
}

并且每次调用都会返回一个更大的数字。
C#中有一个等效的关键字吗?

最佳答案

不,C#中没有这样的东西。您要在多个方法调用之间保留的所有状态都必须位于实例或静态字段中。

除非...如果您在lambda表达式中捕获变量或类似的东西。例如:

public Func<int> GetCounter()
{
    int count = 0;

    return () => count++;
}

现在您可以使用:
Func<int> counter = GetCounter();
Console.WriteLine(counter()); // Prints 0
Console.WriteLine(counter()); // Prints 1
Console.WriteLine(counter()); // Prints 2
Console.WriteLine(counter()); // Prints 3

现在,您当然只需要调用GetCounter()一次,但是该“局部变量”肯定存在于您可能期望的生命周期之外。

这对您可能没有用,这取决于您在做什么。但是大多数时候,将对象的状态置于普通字段中确实很有意义。

关于c# - C#中是否存在一个关键字,该关键字可以使局部变量在多个调用之间持续存在?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8512081/

10-12 12:30
查看更多