关于C#:nullReferenceException的含义是什么?


What is the meaning of NullReferenceException

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is a NullReferenceException in .NET?

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

这个异常的含义是什么?如何解决它?


这意味着您试图访问不在其中的某个成员:

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

只需修复无效的内容。要么将其设为非空,要么先执行空测试。

这里还有一个与Nullable、generics和new通用约束相关的小案例——尽管有点不太可能(但我碰到了这个问题!).


这是.NET中最常见的异常…这仅仅意味着你试图调用一个未初始化的变量的成员(空)。需要先初始化此变量,然后才能调用其成员


这意味着你引用的是null,例如:

1
2
3
4
5
6
7
8
9
10
11
12
class Test
{

   public object SomeProp
   {
      get;
      set;
   }

}

new Test().SomeProp.ToString()

SomeProp将为空,应抛出NullReferenceException。这通常是因为您所调用的代码希望有一些不存在的代码。


在代码中的某个地方,您有一个对象引用,它没有设置为对象的实例:)

在某个地方,您使用的对象没有调用它的构造函数。

你应该怎么做:

1
MyClass c = new MyClass();

你所做的:

1
2
MyClass c;
c.Blah();


下面的代码将向您显示异常和线索。

1
2
string s = null;
s = s.ToUpper();

这意味着当变量尚未初始化时,您已尝试使用对象的方法或属性:

1
2
3
4
5
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