原文地址:http://cshelloworld.com/home/detail/1803462343674433536

弃元符号是什么

弃元符号在C#中只是一个下划线 _,当程序员不想关注某些变量的时候,可以使用这个符号。

用法一:忽略方法的返回值

当C#中某个方法有返回值,但是这个返回值对程序来说没有用处,同时不想在后面的代码中使用这个变量的时候,可以使用弃元符号放弃这变量。

_ = Method1();     

用法二:忽略异步方法的返回值

当程序中有异步方法的时候,一般都需要await关键字。但是如果希望程序以异步方式运行,就可以不写关键字。不过这个时候vs编译器会直接警告,这个时候通过弃元符号就可以放弃这个返回值,并且消除编译器的警告,下面是两种写法,一种是直接忽略Task.Run()方法的返回值,一种是忽略异步方法的返回值。其实第二种写法和用法一的忽略方法返回值是类似的。

_ = Task.Run(() =>
{
Console.WriteLine("这是一个异步方法");
});
_ = MethodAsync();

用法三:忽略元组的返回值

当方法的返回值是元组的时候,元组中有多个变量,如果只用到元组中的个别变量,就可以通过弃元符号放弃其他元组变量。下面的代码中有一个方法GetTuple返回四个变量,但是在调用这个方法的时候,调用方只接受了第一个参数a,其他三个参数通过弃元符号忽略掉。


var (a, _, _, _) = GetTuple();
static (int a, int b, int c, int d) GetTuple()
{
return (1, 2, 3, 4);
}

用法四:忽略out返回值

bool result = int.TryParse("123", out _);

用法五:独立弃元 ??

通过下面这种方式可以用一行代码直接对空引用的字符串抛出异常,并且必须要有弃元符号,否则arg ?? throw new Exception("arg not null"); 这个表达式是无法单独编译通过的。这在C#中叫做独立弃元。

string arg = string.Empty
_ = arg ?? throw new Exception("arg not null");

用法五:switch 里面的默认值忽略

下面的代码通过在switch中,当前吗的case选项都无法匹配的时候,就会使用最后面弃元符号表示的默认值。

string weekStr = "星期一是的是的 ";
int week = weekStr switch
{
"星期一" => 1,
"星期二" => 2,
_ => -1
};

C#弃元表达式的用法的更多相关文章

  1. [译]C# 7系列,Part 4: Discards 弃元

    原文:https://blogs.msdn.microsoft.com/mazhou/2017/06/27/c-7-series-part-4-discards/ 有时我们想要忽略一个方法返回的值,特 ...

  2. SQL进阶1:case表达式的用法示例

    一:case表达式的用法 1.SQL中的case表达式的作用是用来对"某个变量"进行某种转化,通常在select字句中使用,举个例子: 不能看出,case表达式很像我们的if el ...

  3. python lambda表达式简单用法【转】

    python lambda表达式简单用法 1.lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>& ...

  4. cron表达式的用法 【比较全面靠谱】

    转: cron表达式的用法 cron表达式通过特定的规则指定时间,用于定时任务,本文简单记录它的部分语法和实例,并不完全,能覆盖日常大部分需求. 1. 整体结构 cron表达式是一个字符串,分为6或7 ...

  5. C# 9.0 新特性之 Lambda 弃元参数

    阅读本文大概需要不到 1 分钟. 弃元(Discards) 是在 C# 7.0 的时候开始支持的,它是一种人为丢弃不使用的临时虚拟变量.语法上它是用来赋值的,但它却不被分配存储空间,即没有值,所以不能 ...

  6. struts2中#,$,%的用法以及el,ognl表达式的用法

    OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例 取Session中的值 <c:out value="${sessionScope.user.userId}&quo ...

  7. Delphi 类引用 Class Reference 元类 MetaClass 用法

    delphi中类引用的使用实例 类引用类引用(Class Reference)是一种数据类型,有时又称为元类(MetaClass),是类的类型的引用.类引用的定义形式如下: class of type ...

  8. C++11 中function和bind以及lambda 表达式的用法

    关于std::function 的用法:  其实就可以理解成函数指针 1. 保存自由函数 void printA(int a) { cout<<a<<endl; } std:: ...

  9. FEL表达式的用法

    Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运算符(+.-等都是Fel函数),所有这些函数都是可以替换的,扩展函数也非常简单. Fel有双引擎,同时支持解释执 ...

  10. (备忘)cron表达式的用法

    一.结构 cron表达式用于配置cronTrigger的实例,实现任务调度的功能. Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格 ...

随机推荐

  1. 使用hub部署PaddleOCR

    使用hub部署PaddleOCR 概述 目前有一些处理证件照片.资质照片的业务需求,已经尝试过 llava-llama3​ 与 llama3.2-vision​,表现都不佳,要么不能正确 ocr 出文 ...

  2. set -euxo pipefail

    有些开发人员会用Bash来实现很复杂的功能,就像使用别的高级语言一样.他可能觉得自己很牛逼但其他人早就想锤爆他了,Bash的可读性和可维护性远远低于任何高级语言.更要命的是,Bash并没有方便的调试工 ...

  3. docker 1.13版本修改默认存储路径及添加私有registry

    1.服务器安装dockeryum install docker -y12.修改配置文件方法1: 编辑 `/etc/sysconfig/docker`文件 修改`OPTION`选项 添加 --insec ...

  4. linux shell移植,sh不支持数组及bash移植

    查看此时系统shell ls -al /bin/sh Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bou ...

  5. Netty内存池泄漏问题

    为了提升消息接收和发送性能,Netty针对ByteBuf的申请和释放采用池化技术,通过PooledByteBufAllocator可以创建基于内存池分配的ByteBuf对象,这样就避免了每次消息读写都 ...

  6. Qt编写物联网管理平台43-告警短信转发

    一.前言 系统在运行过程中,会实时采集设备的数据,当采集到的数据发生报警后,可以将报警信息以短信的形式发送给指定的管理员(可以是多个),这样管理员就算不在现场,也能第一时间知道哪里发生了报警,可以紧急 ...

  7. Qt编写可视化大屏电子看板系统18-柱状分组图

    一.前言 柱状分组图是柱状堆积图的衍生或者另外一种展示效果,设置的数据值数据源集合完全一样,只不过就是把柱子给拿下来了放在旁边,然后一个分组多个柱子横向排列,不同分组之间有一定的空隙隔开,默认QCus ...

  8. SQL Server 递归+向上统计

    前几天有个需求需要基于分类数据向上统计总数,一开始第一个想法是通过程序来计算,后再思考能不能通过SQL脚本直接来计算 基础数据 Id ParentId Category Num 1 0 分类1 0 2 ...

  9. SQL优化的这15招,真香!

    前言 sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到. 如果某天你负责的某个线上接口,出现了性能问题,需要做优化.那么你首先想到的很有可能是优化sql语句,因为它 ...

  10. 【转】史上最详细的 JDK 1.8 HashMap 源码解析

    HashMap的源码应该是我看过最多变的JDK源码,没有之一,自己也写过一些帖子来记录自己的感悟,虽然其中涉及数据结构以及实现方式也都有所掌握,但是每次看都有不一样的收获,尤其是源码作者的编码思路以及 ...