也就是说,在C中,我们可以定义一个函数:
func(){
static int foo = 1;
foo++;
return foo;
}
Run Code Online (Sandbox Code Playgroud)
每次调用时它都会返回一个更高的数字.C#中是否有等效的关键字?
Jon*_*eet 17
不,C#中没有这样的东西.要在多个方法调用中持久化的所有状态必须位于实例或静态字段中.
除了...如果你在lambda表达式中捕获变量或类似的东西.例如:
public Func<int> GetCounter()
{
int count = 0;
return () => count++;
}
Run Code Online (Sandbox Code Playgroud)
现在你可以使用:
Func<int> counter = GetCounter();
Console.WriteLine(counter()); // Prints 0
Console.WriteLine(counter()); // Prints 1
Console.WriteLine(counter()); // Prints 2
Console.WriteLine(counter()); // Prints 3
Run Code Online (Sandbox Code Playgroud)
当然,你现在只打电话GetCounter()一次,但那个"局部变量"肯定会超出你预期的生命周期......
这可能对你有用也可能没用 - 这取决于你在做什么.但大多数情况下,对象在正常字段中具有状态确实有意义.
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |