编程语言
首页 > 编程语言> > C# 中的 Null 处理技术

C# 中的 Null 处理技术

作者:互联网

在 C# 中,null 是一个特殊值,表示没有值。Null 可以分配给引用类型和可为空的值类型,但不能将其分配给不可为空的值类型。在 C# 中处理空值是编写健壮可靠代码的一个重要方面。在本文中,我将讨论在 C# 中处理空值的一些最常用的技术。

1.空合并运算符(??)

空合并运算符 (??) 是一种速记运算符,用于在左侧操作数不为空时返回左侧操作数,在左侧操作数为空时返回右侧操作数。当您需要在变量为 null 时提供默认值时,此运算符很有用。

例子:

字符串名称=
字符串结果 = 名称 ?? “未知”
控制台.WriteLine(结果); // 输出:未知

在上面的示例中,由于 name 的值为 null,因此使用 null 合并运算符将“Unknown”的值分配给 result。

2.条件运算符(?:)

条件运算符 (?:) 是一个三元运算符,用于评估条件并在条件为真时返回一个值,在条件为假时返回另一个值。当您需要根据条件提供默认值时,此运算符很有用。

例子:

字符串名称=
字符串结果=(名称!=)?名称:“未知”
控制台.WriteLine(结果); // 输出:未知

在上面的示例中,由于 name 的值为 null,因此使用条件运算符将“Unknown”的值分配给 result。

3. 空条件运算符 (?.)

如果对象不为空,则空条件运算符 (?.) 用于访问对象的成员,否则返回空。当您需要访问可能为空的对象的属性或方法时,此运算符很有用。

例子:

字符串名称=
整数length = name?.Length; 
控制台.WriteLine(长度); // 输出:空

在上面的例子中,由于name的值为null,所以length的值也为null。

4.空合并赋值运算符(??=)

如果左侧操作数为空,则空合并赋值运算符 (??=) 用于将右侧操作数分配给左侧操作数。如果变量当前为 null,则此运算符可用于为变量分配默认值。它可以简化代码并使其更简洁。

例子:

字符串名称=
名称??= “未知”
控制台.WriteLine(名字); // 输出:未知

在上面的示例中,由于 name 的值为 null,因此使用空合并赋值运算符将“Unknown”的值分配给 name。

5. Null-Forgiving 运算符 (!.)

允许空值的运算符 (!.) 用于告诉编译器一个值不为空,即使编译器无法确定该值不为空。当您知道某个值不会为 null,但编译器无法确定它不会为 null 时,此运算符很有用。

例子:

字符串名称 = null !; 
int length = name.Length; 
控制台.WriteLine(长度); // 输出:System.NullReferenceException

在上面的例子中,null-forgiving 运算符用于告诉编译器 name 的值不为 null。但是,由于 name 的值实际上为 null,因此会在运行时抛出 System.NullReferenceException。

6. 使用 is 运算符

在 C# 编程语言中,“is”运算符是一个关键字,用于检查变量是否与特定类型兼容。通过在 C# 7.0 中引入对常量模式的支持,该运算符获得了额外的功能。具体来说,“is”运算符现在可用于将值与常量(例如 null)进行比较。

if (name is  null ) 
{ 
   // 要执行的代码
} 
    
   Console.WriteLine(name);

使用“is”运算符扩展了功能,使开发人员能够在其 C# 应用程序中执行类型检查和比较时编写更简洁和可读的代码。

或者,您也可以使用==运算符检查null

对象obj = null ; 

if (obj == null ) 
{ 
    // 如果 obj 为 null 则执行某些操作
} 
else
 { 
    // 如果 obj 不为 null 则执行其他操作
}

这两种方法都可行,但使用is运算符检查null可以更具可读性和表现力,尤其是与其他类型检查结合使用时。

7. 参数空异常

最后,ArgumentNullException 类用于处理传递给方法或构造函数的空参数。当您需要确保传递给方法或构造函数的参数不为空时,此类很有用。

例子:

public  void  DoSomething ( string name )
 {
     if (name == null )
    {
         throw  new ArgumentNullException( nameof (name)); 
    }
    
    Console.WriteLine( $"你好,{name}!" ); 
}
// 用法
DoSomething(null); // 输出:System.ArgumentNullException:值不能为空。(参数“名称”)

在上面的示例中,如果 name 的值为 null,则使用 ArgumentNullException 类抛出异常。

结论

处理空值在软件开发中是非常重要的事情。我们讨论了 7 种技术,您可以使用这些技术在 C# 中处理空值。此外,在 C# 中处理空值对于避免空引用异常和其他意外行为也很重要。

标签:C#,Null, 运算符
来源: