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