0

我的代码有什么问题?我最近在后面的代码中发布了一个关于计算的问题,我尝试了 Vinoth 的答案,但它在这一行给了我一个错误:

bool isChaffeurUsed = (bool)Session["IsChaffeurUsed"];

错误消息是:对象引用未设置为对象的实例。

请告诉我该怎么做。非常感谢,祝您有愉快的一天。

4

7 回答 7

4
Session["IsChaffeurUsed"]

未定义 - 您尚未使用密钥设置任何会话变量IsChaffeurUsed

您需要先检查它是否已设置,

bool isChaffeurUsed;

if(Session["IsChaffeurUsed"] != null)
    isChaffeurUsed = (bool)Session["IsChaffeurUsed"];
于 2012-08-01T13:50:23.217 回答
3

您需要先检查对象,尝试:

var isChaffeurUsed = false;

if (Session["IsChaffeurUsed"] != null)
{
    isChaffeurUsed  = bool.Parse(Session["isChaffeurUsed"].ToString());
}
于 2012-08-01T13:50:23.137 回答
3

该错误试图告诉您Session["IsChaffeurUsed"]不存在。

如果您知道默认值,则可以将语句更改为:

bool isChaffeurUsed = (bool)(Session["IsChaffeurUsed"] ?? false)

或者,如果您想允许空值(这表明该值未专门设置为任何值),您可以使用可为空的类型:

bool? isChaffeurUsed = (bool?)Session["IsChaffeurUsed"];
于 2012-08-01T13:50:38.503 回答
1

Session最有可能的是,您在 name中没有任何内容"IsChaffeurUsed"

于 2012-08-01T13:50:40.200 回答
1

如果 Session 为 null 或在 Session 中未找到 IsChaffeurUsed,您将收到该异常。Session 可能不为空,所以问题很可能是 IsChaffeurUsed 没有找到。

如果未设置 IsChaffeurUsed,您需要决定该怎么做。例如,您可以假设它是错误的:

bool isChaffeurUsed = Session["IsChaffeurUsed"] == null ? false 
     : (bool)Session["IsChaffeurUsed"];
于 2012-08-01T13:52:50.313 回答
0

查看会话变量的一件事是,变量有可能在初始读取后消失(这在我身上发生过几次)。这通常是我在 ASP 应用程序中查看会话/缓存变量时使用的模式:

object o = null;
if((o = Session["IsChaffeurUsed"]) != null)
{
    // Do something with o: bool.Parse, (bool), etc...
}
于 2012-08-01T13:58:46.470 回答
0

TryParse() 方法就是因为这个原因而存在的:

bool.TryParse(Session["IsChaffeurUsed"], out isChaffeurUsed)
于 2012-08-01T13:55:07.723 回答