系统.HttpContext.Current静态变量中的NullReferenceException
本文关键字:NullReferenceException 变量 静态 HttpContext Current 系统 | 更新日期: 2023-09-27 18:06:46
我有一个自定义类User
public class User
{
public string UserId { get; set; }
public string LesseeCode { get; set; }
public string ClientId { get; set; }
public string VehicleId { get; set; }
public string Status { get; set; }
public string UnitDesc { get; set; }
public string ItemId { get; set; }
public string Category { get; set; }
public string Type { get; set; }
public double Amount { get; set; }
}
当我尝试在这里定义一个新用户
public static User currentUser = (HttpContext.Current.Session["User"] == null) ? (User)HttpContext.Current.Session["User"] : new User();
我得到一个System.NullReferenceException
错误,我读到这通常是由一个不可空的变量引起的,要么不被定义,要么被定义为空,但是根据我如何定义currentUser,应该没有办法让它为空?
您需要反转true
和false
的结果,或者反转运算符。我认为两者中比较容易的是将==
更改为!=
。
public static User currentUser = (HttpContext.Current.Session["User"] == null) ? (User)HttpContext.Current.Session["User"] : new User();
you want this to be != ^^
当前你说的是
如果HttpContext.Current。如果会话["User"]为空,则将其分配给currentUser,否则创建一个新用户。
所以你总是有一个空用户或一个新用户
因为currentUser
是static
,不知何故,它的值在HttpContext.Current.Session
存在之前得到评估!
您还应该将==
更改为!=
currentUser = (HttpContext.Current.Session["User"] != null) ? (User)HttpContext.Current.Session["User"] : new User();
或者改变第二个和第三个操作数的顺序
currentUser = (HttpContext.Current.Session["User"] == null) ? new User() : (User)HttpContext.Current.Session["User"];