NullReferenceException是什么意思

时间:2009-06-23 08:31:47

标签: c#

  

可能重复:
  What is a NullReferenceException in .NET?

例如,“System.NullReferenceException未处理”,消息“对象引用未设置为对象的实例。”

此例外的含义是什么,如何解决?

6 个答案:

答案 0 :(得分:14)

这意味着您已尝试访问不存在的内容的成员:

string s = null;
int i = s.Length; // boom

只需修复null即可。要么使其为非null,要么先执行空值测试。

此处还有corner-caseNullable<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();