【发布时间】:2010-11-05 02:30:21
【问题描述】:
例如,“System.NullReferenceException 未处理”,消息“对象引用未设置为对象的实例。”
这个异常是什么意思,如何解决?
【问题讨论】:
标签: c#
例如,“System.NullReferenceException 未处理”,消息“对象引用未设置为对象的实例。”
这个异常是什么意思,如何解决?
【问题讨论】:
标签: c#
这是 .NET 中最常见的异常......它只是意味着您尝试调用未初始化的变量的成员(null)。你需要先初始化这个变量,然后才能调用它的成员
【讨论】:
这意味着你试图访问不存在的东西的成员:
string s = null;
int i = s.Length; // boom
只需修复为空的东西。要么使其非空,要么先执行空测试。
这里还有一个corner-case 与Nullable<T>、泛型和new 泛型约束相关——虽然有点不太可能(但见鬼,我遇到了这个问题!)。
【讨论】:
这意味着当变量尚未初始化时,您已尝试使用对象的方法或属性:
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
【讨论】:
下面的代码将向您展示异常和线索。
string s = null;
s = s.ToUpper();
【讨论】:
在您的代码中的某处,您有一个对象引用,但它没有设置为对象的实例 :)
你在某个地方使用了一个对象,但没有调用它的构造函数。
你应该做什么:
MyClass c = new MyClass();
你做了什么:
MyClass c;
c.Blah();
【讨论】:
这意味着您正在引用 null 的内容,例如:
class Test
{
public object SomeProp
{
get;
set;
}
}
new Test().SomeProp.ToString()
SomeProp 将为 null,应该抛出一个 NullReferenceException。这通常是由于您调用的代码期望有一些不存在的东西。
【讨论】:
o 是一个局部变量,这不会编译。未赋值的局部变量不是null。