我知道,只要应用程序保持运行,静态属性就可以保留其值。非静态类中的私有(private)静态字段是否相同
public class A
{
private static int B;
public int GetSession()
{
return B++;
}
}
在上面的类中,我有一个私有(private)静态字段。调用 GetSession()
方法会提供 GetSession()
访问的次数吗?
最佳答案
由于 B
是静态
,它将在所有 session 之间共享; 线程安全(如果两个 session 试图同时访问/增加它怎么办?)实现是
public int GetSession()
{
return Interlocked.Increment(ref B);
}
编辑:如果我们想要模拟 B++
,而不是 ++B
(并返回 B
在递增之前 - 请参阅 Jeppe Stig Nielsen 的评论)我们可以减去 1
:
public int GetSession()
{
// - 1 Since we want to emulate B++ (value before incrementing), not ++B
return Interlocked.Increment(ref B) - 1;
}
关于c# - 非静态类中私有(private)静态变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54180704/