gpt4 book ai didi

c# - 在 C# 中是否有等效于 C 的静态?

转载 作者:太空狗 更新时间:2023-10-29 17:07:21 26 4
gpt4 key购买 nike

在 C 中我可以做到

void foo() {
static int c = 0;
printf("%d,", c);
c ++;
}

foo();
foo();
foo();
foo();

它应该打印0,1,2,3

C# 中是否有等效项?

最佳答案

虽然有些人建议将其作为 static member 变量,但由于可见性,这并不相同。作为阿奎那回答的替代方案,如果闭包被接受,则可以这样做:

(请注意,Foo 是一个属性,而不是一个方法c 是“每个实例” .)

class F {
public readonly Action Foo;
public F () {
int c = 0; // closured
Foo = () => {
Console.WriteLine(c);
c++;
};
}
}

var f = new F();
f.Foo(); // 0
f.Foo(); // 1

但是,C# 没有直接等同于 C 中的 static 变量。

快乐编码。

关于c# - 在 C# 中是否有等效于 C 的静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com