当前位置: 代码迷 >> ASP.NET >> 静态方法并发内部变量会不会共享?解决方案
  详细解决方案

静态方法并发内部变量会不会共享?解决方案

热度:7142   发布时间:2013-02-25 00:00:00.0
静态方法并发内部变量会不会共享?
public   static   UserModel   UserInfo
                {                        
                        get
                        {
                                UserModel   um;
                                HttpSessionState   session   =   HttpContext.Current.Session;
                                if   (session[ "UserInfo "]   !=   null)
                                {
                                        try
                                        {
                                                um   =   (UserModel)session[ "UserInfo "];
                                        }
                                        catch   {   um   =   new   UserModel();   }
                                }
                                else
                                        um   =   new   UserModel();
                                return   um;
                        }
                }
多用户并发时会不会返回同样的东西?

------解决方案--------------------------------------------------------

------解决方案--------------------------------------------------------
前提是你的静态方法,写在一个单独的类里面
------解决方案--------------------------------------------------------
session[ "UserInfo "]又不是静态的 不会返回相同的东西

当session[ "UserInfo "] == null 时 返回相同的东西new UserModel()
------解决方案--------------------------------------------------------
静态变量的话肯定共享
内部的临时变量不会
------解决方案--------------------------------------------------------
HttpSessionState session = HttpContext.Current.Session;
这就不是内部变量范畴了。
Session对象是公共的,在别的对象里都只是引用,不是实例化.
所以这种做法不是内部变量.
  相关解决方案