我的代码出了什么问题?我最近发布了一个关于Calculation in code behind的问题,我尝试了Vinoth的答案,但它在这一行上给了我一个错误:
bool isChaffeurUsed = (bool)Session["IsChaffeurUsed"];
错误消息是:对象引用未设置为对象的实例。
请告诉我该怎么办。非常感谢,祝你有个美好的一天。
答案 0 :(得分:4)
Session["IsChaffeurUsed"]
未定义 - 您未使用键IsChaffeurUsed
你需要检查它是否先设置,
bool isChaffeurUsed;
if(Session["IsChaffeurUsed"] != null)
isChaffeurUsed = (bool)Session["IsChaffeurUsed"];
答案 1 :(得分:3)
您需要先检查对象,然后尝试:
var isChaffeurUsed = false;
if (Session["IsChaffeurUsed"] != null)
{
isChaffeurUsed = bool.Parse(Session["isChaffeurUsed"].ToString());
}
答案 2 :(得分:3)
错误是试图告诉您Session["IsChaffeurUsed"]
不存在。
如果您知道默认值,则可以将语句更改为:
bool isChaffeurUsed = (bool)(Session["IsChaffeurUsed"] ?? false)
或者,如果您想允许空值(这表示该值未专门设置为任何值),您可以使用可空类型:
bool? isChaffeurUsed = (bool?)Session["IsChaffeurUsed"];
答案 3 :(得分:1)
最有可能的是,Session
中没有名称为"IsChaffeurUsed"
的任何内容。
答案 4 :(得分:1)
如果Session为null或者在Session中找不到IsChaffeurUsed,您将获得该异常。会话可能不为空,因此问题可能是找不到IsChaffeurUsed。
如果未设置IsChaffeurUsed,您需要决定该怎么做。例如,你可以假设它是假的:
bool isChaffeurUsed = Session["IsChaffeurUsed"] == null ? false
: (bool)Session["IsChaffeurUsed"];
答案 5 :(得分:0)
bool.TryParse(Session["IsChaffeurUsed"], out isChaffeurUsed)
答案 6 :(得分:0)
关于查看会话变量的一件事是,在初始读取之后变量可能会消失(这在某些情况下发生在我身上)。这通常是我在处理ASP应用程序中查看会话/缓存变量时使用的模式:
object o = null;
if((o = Session["IsChaffeurUsed"]) != null)
{
// Do something with o: bool.Parse, (bool), etc...
}