“对象引用”不设置为对象实例的是什么?的意思吗?

我收到这个错误,我不确定这意味着什么?

对象引用未设置为对象的实例。

1874530 次浏览

恕我直言,它就是字面意思。其中一个对象引用为NULL。当您尝试访问NULL对象的属性或方法时,就会看到这种情况。

说明你做了类似的事。

Class myObject = GetObjectFromFunction();

没有

if(myObject!=null),你继续执行myObject.Method();

这个错误意味着什么?对象引用未设置为对象的实例。

正是它所说的,你试图使用一个空对象,就好像它是一个正确的 引用对象。< / p >

大多数情况下,当你试图将value传入object,如果值为空,则会发生这种异常。

. Please check 这个链接.

.

为了自我学习,你可以设置一些检查条件。就像

if (myObj== null)
Console.Write("myObj is NULL");

. net中的变量要么是引用类型,要么是值类型。值类型是原语,如整数布尔值或结构(并且可以被标识,因为它们继承自系统。ValueType)。布尔变量,当声明时,有一个默认值:

bool mybool;
//mybool == false

引用类型在声明时没有默认值:

class ExampleClass
{
}


ExampleClass exampleClass; //== null

如果试图使用空引用访问类实例的成员,则会得到系统。得到NullReferenceException。它与对象引用未设置为对象的实例相同。

下面的代码是一个简单的方法来复制它:

static void Main(string[] args)
{
var exampleClass = new ExampleClass();
var returnedClass = exampleClass.ExampleMethod();
returnedClass.AnotherExampleMethod(); //NullReferenceException here.
}


class ExampleClass
{
public ReturnedClass ExampleMethod()
{
return null;
}
}


class ReturnedClass
{
public void AnotherExampleMethod()
{
}
}

这是一个非常常见的错误,可能因为各种原因而发生。根本原因实际上取决于您遇到的特定场景。

如果你使用的API或调用的方法可能返回null,那么处理这个优雅的是很重要的。上面的main方法可以这样修改,使NullReferenceException永远不会被用户看到:

static void Main(string[] args)
{
var exampleClass = new ExampleClass();
var returnedClass = exampleClass.ExampleMethod();


if (returnedClass == null)
{
//throw a meaningful exception or give some useful feedback to the user!
return;
}


returnedClass.AnotherExampleMethod();
}

以上所有内容实际上只是. net类型基础知识的提示,要获得进一步的信息,我建议您选择通过c#实现CLR或阅读同一作者Jeffrey Richter的MSDN文章。还要检查更复杂的例子,当你遇到NullReferenceException时。

一些使用Resharper的团队使用JetBrains属性来注释代码,以突出显示哪里是空值(不)。

另一个简单的方法是:

 Person myPet = GetPersonFromDatabase();
// check for myPet == null... AND for myPet.PetType == null
if ( myPet.PetType == "cat" ) <--- fall down go boom!

如果我有这个类:

public class MyClass
{
public void MyMethod()
{


}
}

然后我做了:

MyClass myClass = null;
myClass.MyMethod();

第二行引发此异常,因为我正在调用null引用类型对象的方法(即通过调用myClass = new MyClass()而不是实例化)

简而言之,这意味着…您正在尝试访问一个对象而没有实例化它..你可能需要使用"new"关键字首先实例化它,即创建它的一个实例。

如:

public class MyClass
{
public int Id {get; set;}
}


MyClass myClass;


myClass.Id = 0; <----------- An error will be thrown here.. because myClass is null here...

你必须使用:

myClass = new MyClass();
myClass.Id = 0;

希望我讲清楚了。