コードの何が問題になっていますか? 最近、コード ビハインドの計算に関する質問を投稿し、Vinoth の回答を試しましたが、次の行でエラーが発生します。
bool isChaffeurUsed = (bool)Session["IsChaffeurUsed"];
エラー メッセージ:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
どうすればいいのか教えてください。どうぞよろしくお願いいたします。良い一日を。
コードの何が問題になっていますか? 最近、コード ビハインドの計算に関する質問を投稿し、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)
または、null 値を許可する場合 (値が具体的にどの値にも設定されていないことを示します)、null 許容型を使用できます。
bool? isChaffeurUsed = (bool?)Session["IsChaffeurUsed"];
Sessionがnullの場合、またはIsChaffeurUsedがSessionで見つからなかった場合は、その例外が発生します。セッションはおそらくnullではないため、IsChaffeurUsedが見つからないという問題が発生している可能性があります。
IsChaffeurUsedが設定されていない場合の対処方法を決定する必要があります。たとえば、それが誤りであると想定できます。
bool isChaffeurUsed = Session["IsChaffeurUsed"] == null ? false
: (bool)Session["IsChaffeurUsed"];
Session
ほとんどの場合、名前には何もありません"IsChaffeurUsed"
。
TryParse() メソッドが存在する理由は次のとおりです。
bool.TryParse(Session["IsChaffeurUsed"], out isChaffeurUsed)
セッション変数を見ることについての1つのことは、最初の読み取り後に変数がなくなる可能性があるということです(これは私に何度か起こりました)。これは通常、ASP アプリでセッション/キャッシュ変数を参照するときに使用するパターンです。
object o = null;
if((o = Session["IsChaffeurUsed"]) != null)
{
// Do something with o: bool.Parse, (bool), etc...
}