c# – 静态方法中的变量共享
发布时间:2020-12-15 04:03:04 所属栏目:百科 来源:网络整理
导读:我有一个关于静态方法中的变量的问题. 静态方法中的变量共享相同的内存位置,还是会有单独的内存? 这是一个例子. public class XYZ{ Public Static int A(int value) { int b = value; return b; }} 如果3个不同的用户调用执行方法A XYZ.A(10);XYZ.A(20);XYZ
我有一个关于静态方法中的变量的问题.
静态方法中的变量共享相同的内存位置,还是会有单独的内存? 这是一个例子. public class XYZ { Public Static int A(int value) { int b = value; return b; } } 如果3个不同的用户调用执行方法A XYZ.A(10); XYZ.A(20); XYZ.A(30); 与此同时.每个电话的返回值是多少? XYZ.A(10)=? XYZ.A(20)=? XYZ.A(30)=? 解决方法
它们仍然是本地变量 – 它们不在线程之间共享.事实上,他们在一个静态方法没有什么区别.
如果你使用一个静态变量作为中间变量,那将是不安全的: public class XYZ { // Don't do this! Horribly unsafe! private static int b; public static int A(int value) { b = value; return b; } } 在这里,所有的线程将真正使用相同的b变量,所以如果你同时从多个线程调用该方法,线程X可以写入b,然后是线程Y,这样线程X最终返回由线程Y设置的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |