我有一些代码,执行时会抛出NullReferenceException,说:你调用的对象是空的。
这是什么意思,我该怎么做才能解决此错误?
原因是什么?
您正在尝试使用null(或Nothing在VB.NET中)。
这意味着您要么将其设置为null,要么根本不将其设置为任何东西。
像其他任何东西一样,null被传遍。
如果null 在方法“ A”中,则可能是方法“ B”将a传递null 给方法“ A”。
null 可以具有不同的含义:
1、未初始化的对象变量,因此没有指向任何对象。在这种情况下,如果访问此类对象的属性或方法,则会导致NullReferenceException。
2、开发人员有意使用null表示没有可用的有意义的值。请注意,C#具有变量的可为空的数据类型的概念(例如数据库表可以具有可为空的字段)-您可以分配null给它们以指示其中没有存储任何值,例如int? a = null;,问号指示允许在其中存储null。
可变的a。您可以使用if (a.HasValue) {...}或通过进行检查if (a==null) {...}。像a本示例一样,可空变量允许通过a.Value显式访问值,或者像通过正常访问变量一样a。 注意的是通过访问它a.Value抛出InvalidOperationException,而不是NullReferenceException如果aISnull-您应该事先进行检查,即,如果您有另一个on-nullable变量,int b;则应该进行like if (a.HasValue) { b = a.Value; }或更短的赋值if (a != null) { b = a; }。
本文的其余部分将详细讨论并显示许多程序员经常犯的错误,这些错误可能导致错误NullReferenceException。
相关阅读 >>
什么是NullReferenceException,如何解决?
更多相关阅读请进入《NullReferenceException》频道 >>
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。