为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

富国沪深 2019-10-12 17:07:28

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

我收到此错误,我不确定这是什么意思?

你调用的对象是空的。


查看完整描述

3 回答

?
春华秋衣

.NET中的变量是引用类型或值类型。值类型是原语,例如整数和布尔值 或结构(并且可以识别,因为它们从System.ValueType继承)。声明时,布尔变量具有默认值:

bool mybool;//mybool == false

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

class ExampleClass{}ExampleClass exampleClass; //== null

如果您尝试使用null引用访问类实例的成员,则会得到System.NullReferenceException。与未设置对象实例的Object引用相同。

以下代码是一种简单的再现方式:

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的方法,那么优雅地处理它是很重要的。可以修改上面的主要方法,以便用户永远不会看到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或者阅读同一作者的这篇MSDN文章 - Jeffrey Richter。还可以查看更复杂的例子,了解何时遇到NullReferenceException。

一些使用Resharper的团队利用JetBrains属性来注释代码,以突出显示(非)预期的空位。



查看完整回答
反对 回复 2019-10-13
?
撒科打诨

另一个简单的方法来获得这个:

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


查看完整回答
反对 回复 2019-10-13
?
慕前端131612

简而言之,它意味着..您正在尝试访问一个对象而不实例化它。您可能需要使用“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;

希望我说清楚..



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信