日期:2014-05-18  浏览次数:20477 次

静态方法并发内部变量会不会共享?
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对象是公共的,在别的对象里都只是引用,不是实例化.
所以这种做法不是内部变量.