静态方法内的变量共享

Kri*_*hna 10 c# static-methods local-variables

我对静态方法中的变量有疑问.静态方法中的变量是共享相同的内存位置还是它们具有单独的内存?

这是一个例子.

public class XYZ
{
    Public Static int A(int value)
    {
      int b = value;
      return b;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果3个不同的用户调用执行方法A.

XYZ.A(10);
XYZ.A(20);
XYZ.A(30);
Run Code Online (Sandbox Code Playgroud)

同时.每次通话的回报值是多少?

XYZ.A(10)=?
XYZ.A(20)=?
XYZ.A(30)=?
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 15

它们仍然是局部变量 - 它们不在线程之间共享.他们在静态方法中的事实没有区别.

如果您使用静态变量作为中间变量,那是不安全的:

public class XYZ
{
    // Don't do this! Horribly unsafe!
    private static int b;
    public static int A(int value)
    {
        b = value;
        return b;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,所有的线程会真正使用相同的b变量,所以,如果你叫从多个线程的方法同时,线程X可以写b,其次是线Y,使线程X结束返回由线程Y.设置的值