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.设置的值