例如,“System.NullReferenceException
未处理”,消息“对象引用未设置为对象的实例。”
此例外的含义是什么,如何解决?
答案 0 :(得分:14)
这意味着您已尝试访问不存在的内容的成员:
string s = null;
int i = s.Length; // boom
只需修复null即可。要么使其为非null,要么先执行空值测试。
此处还有corner-case与Nullable<T>
,泛型和new
通用约束相关 - 虽然有点不太可能(但是,我遇到了这个问题!)。
答案 1 :(得分:8)
这是.NET中最常见的例外...它只是意味着您尝试调用未初始化的变量(null)的成员。您需要先初始化此变量,然后才能调用其成员
答案 2 :(得分:2)
这意味着您引用了null
的内容,例如:
class Test
{
public object SomeProp
{
get;
set;
}
}
new Test().SomeProp.ToString()
SomeProp
将为null,并且应该抛出NullReferenceException
。这通常是由于您调用的代码期望某些内容不存在。
答案 3 :(得分:1)
这意味着当变量尚未初始化时,您已尝试使用对象的方法或属性:
string temp;
int len = temp.Length; // throws NullReferenceException; temp is null
string temp2 = "some string";
int len2 = temp2.Length; // this works well; temp is a string
答案 4 :(得分:1)
下面的代码将向您显示异常和线索。
string s = null;
s = s.ToUpper();
答案 5 :(得分:1)
在代码中的某处,您有一个对象引用,并且它没有设置为对象的实例:)
某个地方你使用了一个对象而没有调用它的构造函数。
你应该做什么:
MyClass c = new MyClass();
你做了什么:
MyClass c;
c.Blah();