详解如何在C#中处理空值
作者:Joydip Kanjilal
在任何编程语言中开发应用程序时,经常会遇到空异常或空引用异常。空指针或空引用是指不引用有效的内存位置或对象的指针。这是一个困扰程序员已经很久的问题,自从程序员开始编写程序以来。空值是一个特殊的值,表示没有有效值可用。当将空值赋给对象时,它会将对象中的字段或变量的值重置为无值,即空值。所以必须在应用程序的代码中处理空值,以避免空引用异常和运行时应用程序的意外行为。那让我们探讨一下在C#中处理空值的各种方法。要使用下面提供的代码示例,首先应该在系统中安装Visual Studio 2022。
在Visual Studio中创建一个控制台应用程序项目
首先,让我们在Visual Studio中创建一个.NET Core控制台应用程序项目。如果系统已安装Visual Studio 2022,请按照以下步骤在Visual Studio中创建一个新的.NET Core控制台应用程序项目:
- 启动Visual Studio IDE。
- 点击“创建新项目”。
- 在“创建新项目”窗口中,从显示的模板列表中选择“控制台应用程序 (.NET Core)”。
- 点击“下一步”。
- 在“配置新项目”窗口中,指定新项目的名称和位置。
- 点击“下一步”。
- 在接下来显示的“附加信息”窗口中,选择“.NET 7.0 (标准支持期)”作为您要使用的框架版本。
- 点击“创建”。
我们将使用这个.NET 7控制台应用程序项目来处理接下来文章中的空值。我们将探讨在C#中处理空值的五种方法。可以根据对应的应用程序的需求选择使用哪种方法。
C#中的空条件运算符(?.)
当对象不为null时,您可以使用空条件运算符(?.)访问其成员(数据成员和方法)。如果对象为null,空条件运算符将返回null,但在访问对象的成员时不会引发运行时异常。考虑以下类的示例:
public class Author { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } }
现在编写以下代码来创建一个Author对象,为FirstName和LastName属性赋值,并获取Address属性的长度。请注意,我们没有为Address属性赋值,因此它被设置为null。
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; int length = author.Address.Length;
当执行上述代码片段时,将会遇到一个运行时异常,如下图所示。
图一:空引用异常
以下代码示例展示了如何在C#中使用空条件运算符来避免运行时异常。
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null; int? length = author.Address?.Length;
C#中的空合并赋值操作符(??=)
当左操作数的值为null时,空合并赋值运算符将右操作数的值赋给左操作数。以下是一个在C#中使用该运算符的示例:
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null; author.Address ??= "Default"; Console.WriteLine(author.Address);
C#中的空值忽略运算符(!.)
空值忽略或空值抑制运算符(!)允许在表达式中抑制所有警告。只有在确信属性或对象的值不会为null,并且希望抑制知道是错误的警告时,才应使用此运算符。以下代码片段演示了如何使用空值忽略运算符:
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null!; int length = author.Address.Length; Console.WriteLine(length);
C#中的条件运算符 (?:)
可以使用条件运算符 (?:) 来评估包含其中一个操作数为null值的表达式。条件运算符也被称为三元条件运算符,因为使用该运算符的语句有三个部分:条件(布尔表达式)、结果表达式和备选表达式。如果条件为真,则结果表达式(在冒号左侧)将被评估/返回。如果条件为假,则备选表达式(在冒号右侧)将被评估/返回。以下是一个示例,演示了如何在表达式中使用条件运算符来处理null值:
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null!; string result = (author.Address != null) ? author.Address : "Unknown"; Console.WriteLine(result);
C#中的is运算符(类型判断运算符)
还可以使用关键字is
来检查一个值是否为null。这个关键字(同时也是一个运算符)可以用于比较常量值甚至null值。以下代码片段展示了如何在C#中使用这个运算符来处理null值。
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null!; if(author.Address != null) { Console.WriteLine(author.Address); } else { Console.WriteLine("The value of the Address property is null"); }
除了上面提到的五种技术之外,还可以使用C#中的其他运算符来检查null值。使用这里展示的运算符来处理null值的主要目标是避免编写处理异常的代码。使用这些技术,可以保持代码的整洁和可管理性。
到此这篇关于详解如何在C#中处理空值的文章就介绍到这了,更多相关C#处理空值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!