我很抱歉,如果这是一个转贴,但我找不到任何可以给我答案的材料。和我一起,我不是ASP的专业人士。
所以我的问题是我得到Exception: Object Reference
未设置为对象的实例...
我有一个Globalvariables类,它存储一个特定字符串,如果字符串被调用" OK",那么我应该能够加载页面,但如果字符串是"无效&#34 ;我不能加载页面。
在我的默认页面中,我有以下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"
它可以正常工作,但如果我像上面那样写,我会得到错误...希望我温柔的灵魂可以给我一些指导。
答案 0 :(得分:1)
我很确定你没有初始化全局变量“GlobalVariables.Data”。 .NET编译器会自动将其初始化为null,这就是您获得null引用异常的原因。 ==是一个静态方法(如果你很好奇,请参阅运算符重载MSDN doc以获取更多信息),这就是为什么它不会抛出异常。
这就是说,在这种情况下,似乎更像是你可能想要使用布尔值,而不是字符串,但我不熟悉你的用例。
答案 1 :(得分: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
{
}
答案 2 :(得分:0)
尝试稍微更改代码
if (!string.IsNullOrWhiteSpace(GlobalVariables.Data) && GlobalVariables.Data.StartsWith("OK"))
{
//Do stuff
}
else
{
// Do stuff
}
首先检查您的字符串是否已分配给某个蚂蚁,然后以OK符号开头。
答案 3 :(得分:0)
如果以part开头是你的整个字符串,你应该避免使用“StartsWith”方法。我建议做这样的事情:
//这是一个不区分大小写的检查可能的值
if(!string.IsNullorEmpty(GlobalVariables.Data))
{
if (GlobalVariables.Data.Equals("ok",StringComparison.OrdinalIgnoreCase))
{
//Do stuff
}
}