进一步来说
该runtime扔NullReferenceException 总是意味着同样的事情:你要使用的引用,引用未初始化(或它一次初始化,但不再初始化)。
这意味着引用为null,并且您无法通过null引用访问成员(例如方法)。
最简单的情况:
string foo = null;
foo.ToUpper();
这将NullReferenceException在第二行抛出,因为您无法ToUpper()在string指向的引用上调用实例方法null。
调试
您如何找到来源NullReferenceException?除了查看将要引发的异常本身之外,Visual Studio中的调试一般规则也适用:放置战略断点并检查变量,方法是将鼠标悬停在它们的名称上,然后打开(快速)监视窗口或使用各种调试面板(例如本地和自动)。 如果要查找在哪里设置或未设置引用,请右键单击其名称,然后选择“查找所有引用”。然后,可以在每个找到的位置放置一个断点,并在连接了调试器的情况下运行程序。调试器每次在这样的断点处中断时,都需要确定是否希望引用为非空,检查变量,并在期望时验证它是否指向实例。
通过以这种方式遵循程序流程,您可以找到实例不应为null的位置以及未正确设置实例的原因。
本文翻译至stackoverflow,内容略有出入,原文地址:https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it,侵删。
相关阅读 >>
什么是NullReferenceException,如何解决?
更多相关阅读请进入《NullReferenceException》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。