gpt4 book ai didi

.net - "Object reference not set to an instance of an object"是什么意思?

转载 作者:行者123 更新时间:2023-12-03 04:13:34 24 4
gpt4 key购买 nike

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

Object reference not set to an instance of an object.

最佳答案

.NET 中的变量要么是引用类型,要么是值类型。值类型是基元,例如 integersbooleans或结构(并且可以被识别,因为它们继承自 System.ValueType )。 bool 变量在声明时有一个默认值:

bool mybool;
//mybool == false

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

class ExampleClass
{
}

ExampleClass exampleClass; //== null

如果您尝试使用空引用访问类实例的成员,那么您会得到 System.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 类型基础知识的提示,有关更多信息,我建议选择 CLR via C#或阅读此MSDN article由同一作者 - 杰弗里·里克特 (Jeffrey Richter) 撰写。另请查看,更复杂,example何时会遇到 NullReferenceException。

一些使用 Resharper 的团队会利用 JetBrains attributes注释代码以突出显示预期(不)出现空值的位置。

关于.net - "Object reference not set to an instance of an object"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/779091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com