c# – 静态方法中的变量共享

c# – 静态方法中的变量共享,第1张

概述我有一个关于静态方法中的变量的问题. 静态方法中的变量共享相同的内存位置,还是会有单独的内存? 这是一个例子. public class XYZ{ Public Static int A(int value) { int b = value; return b; }} 如果3个不同的用户调用执行方法A XYZ.A(10);XYZ.A(20); 我有一个关于静态方法中的变量的问题.
静态方法中的变量共享相同的内存位置,还是会有单独的内存?

这是一个例子.

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

总结

以上是内存溢出为你收集整理的c# – 静态方法中的变量共享全部内容,希望文章能够帮你解决c# – 静态方法中的变量共享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1261837.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存