ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# 中的 Null 处理技术

2023-03-15 11:50:14  阅读:485  来源: 互联网

标签: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, 运算符
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有