返回顶部
首页 > 资讯 > 精选 >C#中检查null的语法糖有哪些
  • 124
分享到

C#中检查null的语法糖有哪些

2023-06-30 09:06:55 124人浏览 泡泡鱼
摘要

这篇文章主要介绍了C#中检查null的语法糖有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中检查null的语法糖有哪些文章都会有所收获,下面我们一起来看看吧。函数参数null检查传统写法写一个函数的时

这篇文章主要介绍了C#中检查null的语法糖有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中检查null的语法糖有哪些文章都会有所收获,下面我们一起来看看吧。

函数参数null检查

传统写法

写一个函数的时候,最经典的检查,估计也是大家最常使用的null检查,应该是这样的吧:

public static void GetV1(string prompt){    if (prompt is null) throw new ArgumentNullException(nameof(prompt));    Console.WriteLine(prompt);}

ThrowIfNull

这个写起来也没啥问题,但是总觉得有点不舒适。.NET 6ArgumentNullException中新增了ThrowIfNull方法,可以写的更优雅一点。

public static void GetV2(string prompt){    ArgumentNullException.ThrowIfNull(prompt);    Console.WriteLine(prompt);}

异常的时候,就会出现:System.ArgumentNullException: 'Value cannot be null. (Parameter 'prompt')'。这个是不是简单了点?可是还是需要写一行。

C# 11的!!语法(已经取消)

C# 11刚preview的时候,我就瞄到了这个特性,现在依然可以通过设置preview来进行启用,但是以后正式发布估计就不行了。

它通过在参数后面叠加!!表示此参数不可为空,运行时会自动进行检查,如果是null就直接弹出错误。

public static void GetV3(string prompt!!){    Console.WriteLine(prompt);}

这个代码会被编译器翻译成:

public static void GetV3(string prompt!!){    if (prompt is null) {        throw new ArgumentNullException(nameof(prompt));    }    Console.WriteLine(prompt);}

这样大家就可以专注于业务代码,不需要经常考虑异常检查了。至于为什么这个东西最后还是被删除了,可以从讨论中看到一丝端倪,首先是感觉非常纠结于这个语法,两个叹号;然后就是已经有比较多的方式可以实现检查了,这个东西是否有必要。反正最终是以后再讨论了,不过也可以看出来C#语言工作组对语言的特性讨论非常谨慎。

他们还讨论了很多别的形式,每种都提出了各自的优缺点挺有意思的,能看出来有一点设计语言的严谨和小强迫症在,点赞~

void M(string s!!);void M(string! s);void M(string s!);void M(notnull string s);void M(string s ?? throw);void M(string s is not null);void M(checked string s);void M(string s) where s is not null;

有关null的一些操作

说起这个,就顺便说说c#处理null的另外几个语法糖吧。

??

如果左边是的null,那么返回右边的操作数,否则就返回左边的操作数,这个在给变量赋予默认值非常好用。

int? a = null;int b = a ?? -1;Console.WriteLine(b);  // output: -1

??=

当左边是null,那么就对左边的变量赋值成右边的

int? a = null;a ??= -1;Console.WriteLine(a);  // output: -1

?.

当左边是null,那么不执行后面的操作,直接返回空,否则就返回实际操作的值。

using System;public class C {    public static void Main() {        string i = null;        int? length = i?.Length;        Console.WriteLine(length ?? -1); //output: -1    }}

?[]

索引器操作,和上面的操作类似

using System;public class C {    public static void Main() {        string[] i = null;        string result = i?[1];        Console.WriteLine(result ?? "null"); // output:null    }}

注意,如果链式使用的过程中,只要前面运算中有一个是null,那么将直接返回null结果,不会继续计算。下面两个操作会有不同的结果。

using System;public class C {    public static void Main() {        string[] i = null;        Console.WriteLine(i?[1]?.Substring(0).Length); //不弹错误        Console.WriteLine((i?[1]?.Substring(0)).Length) // System.NullReferenceException: Object reference not set to an instance of an object.    }}

一些操作

//参数给予默认值if(x == null) x = "str";//替换x ??= "str";//条件判断string x;if(i<3)     x = y;else {      if(z != null) x = z;     else z = "notnull";}//替换var x = i < 3 ? y : z ?? "notnull"//防止对象为null的时候,依然执行代码if(obj != null)     obj.Act();//替换obj?.Act();//Dictionary取值与赋值string result;if(dict.ContainKey(key)){    if(dict[key] == null) result = "有结果为null";    else result = dict[key];}else     result = "无结果为null";//替换var result= dict.TryGetValue(key, out var value) ? value ?? "有结果为null" : "无结果为null";

关于“C#中检查null的语法糖有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C#中检查null的语法糖有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: C#中检查null的语法糖有哪些

本文链接: https://lsjlt.com/news/327952.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中检查null的语法糖有哪些
    这篇文章主要介绍了C#中检查null的语法糖有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中检查null的语法糖有哪些文章都会有所收获,下面我们一起来看看吧。函数参数null检查传统写法写一个函数的时...
    99+
    2023-06-30
  • 详解C#中检查null的语法糖
    目录函数参数null检查传统写法ThrowIfNullC# 11的!!语法(已经取消)有关null的一些操作=.[]一些操作结语今天看到已经更新了devblogs,新增的C# 11的...
    99+
    2024-04-02
  • java有哪些语法糖
    java中的语法糖有:1.lambda表达式;2.可变参数;3.条件编译;4.switch;5.增强for循环;6.泛型;java中的语法糖有以下几种lambda表达式public void lambdaTest() {List list ...
    99+
    2024-04-02
  • python语法糖有哪些
    这篇文章给大家介绍python语法糖有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(浮点型)。...
    99+
    2023-06-14
  • VB.NET语法糖有哪些
    这篇文章将为大家详细讲解有关VB.NET语法糖有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。VB.NET是一个功能非常强大的编程语言。支持代码托管,而且其运行机制和Java相同。所以刚刚接触这一语言...
    99+
    2023-06-17
  • es6有哪些语法糖
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。语法糖:是指编程语言中可以更容易的表达一个操作的语法,它可以使程序员更加容易去使用这门语言,操作可以变得更加清晰、方便,或者更加符合程序员的编程习惯。ES...
    99+
    2023-05-14
    ES6
  • Java中有哪些常见的语法糖
    Java中有哪些常见的语法糖,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Pe...
    99+
    2023-06-16
  • Java中的语法糖有哪些及怎么使用
    本篇内容主要讲解“Java中的语法糖有哪些及怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的语法糖有哪些及怎么使用”吧! Java中的语法糖...
    99+
    2024-04-02
  • Eslint代码检查的方法有哪些
    本篇内容介绍了“Eslint代码检查的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一:理解代码...
    99+
    2024-04-02
  • MongoDB中有哪些查询语法
    MongoDB中有哪些查询语法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、查询find方法db.collection_n...
    99+
    2024-04-02
  • C++中检测链表中的循环方法有哪些
    这篇文章主要讲解了“C++中检测链表中的循环方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中检测链表中的循环方法有哪些”吧!给定一个链表,检查链表是否有循环。下图显示了带有循...
    99+
    2023-06-15
  • NULL在c语言中的用法
    null 是 c 语言中的一个特殊常量,它表示空指针值,通常被定义为 0。使用 null 可以明确表示指针未指向任何有效的内存地址,也能用于错误检查和动态内存管理。主要使用场景包括函数返...
    99+
    2024-05-02
    c语言
  • C语言中static的用法有哪些
    在C语言中,static关键字有以下几种用法:1. 在全局变量中使用static:当static关键字用于全局变量时,它的作用是限制...
    99+
    2023-08-08
    C语言 static
  • c语言中有哪些排序的方法
    这期内容当中小编将会给大家带来有关c语言中有哪些排序的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、选择排序-简单选择排序选择排序是最简单的一种基于O(n2)时间复杂度的排序算法,基本思想是从i=...
    99+
    2023-06-20
  • c语言中算法的特点有哪些
    C语言中算法的特点包括:1. 可移植性:C语言是一种高级语言,其代码可以在不同的平台上进行编译和运行,具有良好的可移植性。2. 效率...
    99+
    2023-09-11
    c语言
  • C语言的基本语法有哪些
    C语言的基本语法包括以下内容:1. 注释:用来给代码添加说明和解释,包括单行注释(以"//"开头)和多行注释(以""结尾)。2. 标...
    99+
    2023-08-08
    C语言
  • Java中Null的知识有哪些
    这篇文章主要介绍“Java中Null的知识有哪些”,在日常操作中,相信很多人在Java中Null的知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Null的知识有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • 详解Objective-C中的语法糖@{}究竟是什么
    最近在技术群里有一个群友提出了一个问题,就是为什么下面代码打印的结果不一样? NSMutableDictionary *mDic1 = [NSMutableDictionary ...
    99+
    2022-05-23
    objective-c 语法糖 @{}
  • c语言continue的用法有哪些
    在C语言中,`continue`关键字的用法有以下几种:1. 在循环语句中使用:`continue`语句用于跳过当前迭代中剩余的语句...
    99+
    2023-08-26
    c语言 continue
  • C语言switch语句的用法有哪些
    C语言中的switch语句用于根据不同的条件执行不同的代码块。它的用法有以下几种:1. 基本用法:根据一个变量的值,执行对应的代码块...
    99+
    2023-08-18
    C语言 switch
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作