我的代码有什么问题?我最近在后面的代码中发布了一个关于计算的问题,我尝试了 Vinoth 的答案,但它在这一行给了我一个错误:
bool isChaffeurUsed = (bool)Session["IsChaffeurUsed"];
错误消息是:对象引用未设置为对象的实例。
请告诉我该怎么做。非常感谢,祝您有愉快的一天。
Session["IsChaffeurUsed"]
未定义 - 您尚未使用密钥设置任何会话变量IsChaffeurUsed
您需要先检查它是否已设置,
bool isChaffeurUsed;
if(Session["IsChaffeurUsed"] != null)
isChaffeurUsed = (bool)Session["IsChaffeurUsed"];
您需要先检查对象,尝试:
var isChaffeurUsed = false;
if (Session["IsChaffeurUsed"] != null)
{
isChaffeurUsed = bool.Parse(Session["isChaffeurUsed"].ToString());
}
该错误试图告诉您Session["IsChaffeurUsed"]
不存在。
如果您知道默认值,则可以将语句更改为:
bool isChaffeurUsed = (bool)(Session["IsChaffeurUsed"] ?? false)
或者,如果您想允许空值(这表明该值未专门设置为任何值),您可以使用可为空的类型:
bool? isChaffeurUsed = (bool?)Session["IsChaffeurUsed"];
Session
最有可能的是,您在 name中没有任何内容"IsChaffeurUsed"
。
如果 Session 为 null 或在 Session 中未找到 IsChaffeurUsed,您将收到该异常。Session 可能不为空,所以问题很可能是 IsChaffeurUsed 没有找到。
如果未设置 IsChaffeurUsed,您需要决定该怎么做。例如,您可以假设它是错误的:
bool isChaffeurUsed = Session["IsChaffeurUsed"] == null ? false
: (bool)Session["IsChaffeurUsed"];
查看会话变量的一件事是,变量有可能在初始读取后消失(这在我身上发生过几次)。这通常是我在 ASP 应用程序中查看会话/缓存变量时使用的模式:
object o = null;
if((o = Session["IsChaffeurUsed"]) != null)
{
// Do something with o: bool.Parse, (bool), etc...
}
TryParse() 方法就是因为这个原因而存在的:
bool.TryParse(Session["IsChaffeurUsed"], out isChaffeurUsed)