首页 > 编程语言 >C#弃元表达式的用法

C#弃元表达式的用法

时间:2024-06-21 09:43:11浏览次数:17  
标签:符号 C# 用法 忽略 弃元 int 返回值 表达式

原文地址: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#,用法,忽略,弃元,int,返回值,表达式
From: https://www.cnblogs.com/caoruipeng/p/18259932

相关文章

  • C++(野指针)
    野指针(DanglingPointer)是在C++中指向无效内存位置的指针。野指针通常发生在以下几种情况下:释放了内存但没有将指针设为NULL:当使用delete或delete[]释放内存后,指针仍然保持指向原来的地址,但该地址已经无效。int*ptr=newint(10);deleteptr;//ptr现在是野指针栈上......
  • 使用Microsoft.SemanticKernel基于本地运行的Ollama大语言模型实现Agent调用函数
    大语言模型的发展日新月异,记得在去年这个时候,函数调用还是gpt-4的专属。到今年本地运行的大模型无论是推理能力还是文本的输出质量都已经非常接近gpt-4了。而在去年gpt-4尚未发布函数调用时,智能体框架的开发者们依赖构建精巧的提示词实现了gpt-3.5的函数调用。目前在本机运行的大......
  • 83. Remove Duplicates from Sorted L
    Giventheheadofasortedlinkedlist,deleteallduplicatessuchthateachelementappearsonlyonce.Returnthelinkedlistsortedaswell.Example1:Input:head=[1,1,2]Output:[1,2]Example2:Input:head=[1,1,2,3,3]Output:[1,2,3]......
  • Windows11系统WESL_ShellLauncher.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个WESL_ShellLauncher.dll文件(挑选合适的版本......
  • Chrome谷歌浏览器如何设置,才能正常使用?
    Chrome浏览器,也被称为谷歌浏览器,由于简洁的界面设计,极快的响应速度,强大的插件商店,在全球浏览器市场份额中一直都处于遥遥领先的地位。但是因为2010年谷歌宣布退出中国,国内不能再使用谷歌的服务,所以在国内需要设置一下才能正常的使用,如何设置呢?今天教给大家。首先下载Chrome浏......
  • 如何使用Decider将网络攻击行为映射到MITRE ATT&CK®框架之中
    关于DeciderDecider是一款功能强大的网络威胁行为映射工具,该工具可以帮助网络安全防御人员、网络威胁分析人员和网络安全研究人员将攻击者的行为映射到MITREATT&CK®框架之中。Decider通过引导用户完成映射过程,使创建ATT&CK映射变得更容易。该工具支持通过向用户询问一系列......
  • Graphicator:一款功能强大的GraphQL枚举与提取工具
    关于GraphicatorGraphicator上一款功能强大的GraphQL枚举与提取工具,该工具可以对目标GraphQL节点返回的内部文档进行迭代,然后以内部形式重新构建数据模式,以便重新创建支持的查询。创建此类查询时,将使用它们向GraphQL节点发送请求,并将返回的响应保存到文件中。工具不会保存错......
  • 深度分析:React Native、Flutter、UniApp、Taro、Vue的差异
    深度分析:ReactNative、Flutter、UniApp、Taro、VueReactNative优势:跨平台代码共享:使用JavaScript和React,可以为iOS和Android开发应用,代码复用率高。活跃社区和生态系统:React和ReactNative有庞大的社区,提供了大量的第三方库和插件。热重载:开发效率高,修改代码后几乎......
  • Privilege Escalation 权限提升
    第1章前言这是tryhackme渗透测试章节的最后一个房间。原本想谷歌机翻然后我手工看一下,但是感觉这样练习不了英文,所以全部手工翻译,实在翻不出来再交给谷歌。手工翻译不免存在勘误,建议英文好的读者朋友们直接去阅览原文。第2章shell权限提升,简称提权。在讲提权之前,先......
  • 【容器安全防线】Docker攻击方式与防范技术探究
    什么是Docker?Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的Docker有以下几个部分组成:1、Doc......