0

Exception: Object Referenceオブジェクトのインスタンスに設定されていません。

1 つの特定の文字列を格納する Globalvariables クラスがあります。文字列が「OK」と呼ばれる場合、ページをロードできるはずですが、文字列が「無効」の場合、ページをロードできないはずです。

デフォルトのページには、次の Page_load メソッドがあります。

protected void Page_Load(object sender, EventArgs e)
{
    var masterPage = Master;

    if (masterPage != null)
    {
        if (GlobalVariables.Data.StartsWith("OK"))
        {
            //Do stuff
        }
        else
        {
            // Do stuff
        }
    }
}

私が書いGlobalGlobalVariables.Data == "OK"た場合は問題なく動作しますが、上記のように書くとエラーが発生します。

4

4 に答える 4

1

の値が のGlobalVariables.Data前に設定されPage_Loadていないか、デフォルト値がないようです。

解決策 1: デフォルト値を追加します。

public static class GlobalVariables
{
    private static string _data;

    public static string Data
    {
        get { return _data ?? "Invalid"; }
        set { _data = value; }
    }
}

使用法:

if(GlobalVariables.Data.Equals("Ok", StringComparison.OrdinalIgnoreCase))
{

}
else
{

}

しかし、フラグが必要なように聞こえるので、enum?を使用しない理由はありません。

解決策 2: 列挙型

public enum DataStatus
{
    Invalid,
    Ok
}

public static class GlobalVariables
{
    public DataStatus DataStatus { get; set; }
}

使用法:

if(GlobalVariables.DataStatus == DataStatus.Ok)
{

}
else
{

}
于 2013-10-14T13:49:14.250 に答える