NullReferenceException 是当我们尝试访问任何值为 null 的成员类型时程序抛出的异常,这意味着当我们尝试访问没有值或为 null 值的变量时,Null Reference 异常将被扔掉。此例外适用于 .NET、.NET Core 和 .Net Framework 的各个版本。 C#中的这些引用变量与C中的指针概念非常吻合。发生NullReferenceException的情况有很多种,有多种方法可以避免或解决它。
语法:
以下是用于实现 NullReferenceException 的标准语法:
public class NullReferenceException :SystemException
空引用异常继承自系统异常,系统异常基本上可以在对象和异常中找到。众所周知,这是最常见的异常之一,有多种方法可以处理它。
简单来说,空引用异常是我们尝试访问未引用任何其他对象的变量的事件的结果。现在,引用引用在这里不是问题,但是当引用变量没有引用任何其他对象时,它基本上被视为 null。当代码引用的点最终变为 null 时,就会出现问题,然后我们会遇到名为 NullReferenceException 的异常。程序可能会在多种情况下引发空引用异常。当我们执行一个程序时,如果遇到空引用异常,输出将是这样的:
未处理的异常:
System.NullReferenceException:未将对象引用设置到对象的实例。
现在我们已经了解了异常是什么以及它是如何工作的,让我们开始用示例正确地演示异常。对于我们的第一个示例,非常简单,我们有一个保存空值的简单变量,然后我们将尝试处理该变量,但由于是空值,它将抛出空引用异常。程序代码如下:
代码:
using System; public class SampleProgram { public static void Main() { string name = null; varval =name.ToString(); Console.WriteLine(val); } }
代码说明:使用System声明,我们有我们的类Sample,它是公共的。然后我们有 static void main 语句,然后创建一个名为 name 的简单字符串变量,分配的值为 null,这意味着该变量没有值。这个字符串变量在这里很重要,稍后我们创建另一个名为 val 的变量,我们尝试将 name 的值转换为字符串。最后,我们有一个 print 语句,它将打印 name 的值,现在使用 ToString() 转换该值。请参阅下面所附的输出屏幕截图:
输出:
如果正确执行,代码会抛出一个错误,即NullReferenceException。原因是当我们尝试调用 ToString() 方法时,它将转到变量名,但我们的变量名没有值,即 null。众所周知,空值不能使用 ToString() 进行转换。所以我们的代码只会打印一个错误,这意味着代码正在按预期运行。
正如所解释的,程序已因异常而终止。接下来,我们将演示另一个简单的示例,正如所解释的那样,它会导致相同的异常。
代码:
using System; class SampleProgram { static void Main() { string val = null; if (val.Length == 0) { Console.WriteLine(val); } } }
代码说明:与我们的第一个示例类似,这里我们有命名空间和第一个调用,其中包含主语句。然后我们的字符串变量的值为 null。这将是主要变量,它将导致我们预期的异常。然后我们有一个简单的 if 条件,我们将检查变量的长度是否为零,如果为零,它将进入下一步并打印值。但代码不会移动到最后的打印行,因为它会在 if 内遇到异常。请参阅下面所附的输出屏幕截图:
输出:
这里,输出就像我们的第一个示例“未处理的异常”,因为异常是相同的,我们尝试在这里实现一个函数,但正如所解释的,我们的变量有一个空值,这导致我们出现空引用异常。现在我们已经看到并理解了这个空引用异常是如何以及为什么发生的,了解如何避免它以使程序更好地运行非常重要。
The Null Reference Exception is not a major error, but one of the common ones and one of the basic and simple way to avoid the Null Reference Exception is to check the variable or property before moving ahead and accessing it. And a very basic way to do this is to check the variable within an if statement. We will demonstrate an example where we will avoid the occurrence of the exception and the code will move on.
Code:
using System; class SampleProgram { static void Main() { string val = null; if (val == null) { Console.WriteLine("\n Value to the variable is null."); } else{ Console.WriteLine(val); } } }
Output:
Code Explanation: Here we have our class which holds the main statement than a variable with a null value. Then we enter an if else statement, where the value of the variable is checked if it is null, the print statement will be printed and the program will terminate, if the value is not null, then it will move ahead and into else part, it will print the value. As expected our code printed that “Value to the variable is null.” because the value is null. If we try the same example with a string value, the program will proceed and the else part will be printed.
The NullReferenceException is encountered when we attempt to access a variable which holds a null value, it can be variable or object. The reference should not hold null value else the exception will be thrown. There are many situations where this can be seen and the simplest way to avoid the NullReferenceException is to check beforehand, before accessing the value.
以上是C# NullReferenceException的详细内容。更多信息请关注PHP中文网其他相关文章!