首页 > 其他分享 >C # 9.0 的模式匹配

C # 9.0 的模式匹配

时间:2023-04-13 16:34:35浏览次数:33  
标签:string int object LifeStage o1 9.0 o2 模式匹配

void M(object o1, object o2)
{
 var t = (o1, o2);
 if (t is (int, string)) {} // test if o1 is an int and o2 is a string
 switch (o1) {
 case int: break; // test if o1 is an int
 case System.String: break; // test if o1 is a string
 }
}

关系模式 与常数值相比,关系模式允许程序员表达输入值必须满足关系约束:

public static LifeStage LifeStageAtAge(int age) => age switch
 {
 < 0 => LifeStage.Prenatal,
 < 2 => LifeStage.Infant,
 < 4 => LifeStage.Toddler,
 < 6 => LifeStage.EarlyChild,
 < 12 => LifeStage.MiddleChild,
 < 20 => LifeStage.Adolescent,
 < 40 => LifeStage.EarlyAdult,
 < 65 => LifeStage.MiddleAdult,
 _ => LifeStage.LateAdult,
 };

关系模式支持 < 所有内置类型上的关系运算符<= 和, > >= 它们支持在表达式中 使用两个具有相同类型的操作数的内置类型。 具体而言,支持sbyte byte short ushort 、 int 、 uint 、 long ulong char float double decimal nint nuint 和的所有关系模式。

模式组合器

if (e is not null) ...
bool IsLetter(char c) => c is >= 'a' and <= 'z' or >= 'A' and <= 'Z';
bool IsLetter(char c) => c is (>= 'a' and <= 'z') or (>= 'A' and <= 'Z');

语义 (例如,类型) 关系运算符

bool IsValidPercentage(int x) => x is >= 0 and <= 100;
bool IsValidPercentage(object x) => x is >= 0 and <= 100;
bool IsValidPercentage(object x) => x is
 >= 0 and <= 100 or // integer tests
 >= 0F and <= 100F or // float tests
 >= 0D and <= 100D; // double tests

从左侧的左侧流向类型信息 and

bool isSmallByte(object o) => o is byte and < 100;
byte b = ...;
int x = b switch { <100 => 0, 100 => 1, 101 => 2, >101 => 3 };

 

标签:string,int,object,LifeStage,o1,9.0,o2,模式匹配
From: https://www.cnblogs.com/tx1185498724/p/17315302.html

相关文章

  • KMP算法(串的模式匹配算法)(未完待续......)
    KMP算法的实现1.基本原理  在暴力破解算法(BF算法)中,模式串需要一个一个来跟主串进行对比,若有一个不相同,则主串前进一位,继续从头开始进行比较,这样比较的最坏时间复杂度为O(mn),例:‘aaaaaaaaab’和‘aaab’,需要比较到最后一个才能成功,效率太过低下。  KMP算法的原理是,找到模式串......
  • Rust语言 学习05 枚举与模式匹配
    一、定义枚举enumMessage{Quit,Move{x:i32,y:i32},Write(String),ChangeColor(i32,i32,i32),}fnmain(){letq=Message::Quit;letm=Message::Move{x:12,y:24};letw=Message::Write(String::from("Hello"));letc......
  • Tomcat 9.0.26 高并发场景下DeadLock问题排查与修复
    vivo互联网技术微信公众号 作者:黄卫兵、陈锦霞一、Tomcat容器9.0.26版本Deadlock问题1.1问题现象1.1.1 发生Deadlock的背景某接口/get.do压测,3分钟后,成功事务数TPS由1W骤降至0。1.1.2 Tomcat服务器出现大量的CLOSE_WAIT被压测服务器,出现TCPCLOSE_WAIT状态个数在200~......
  • OpenCloudOS 9.0 发布:首个全自研服务器操作系统
    系统开源社区OpenCloudOS正式发布首个全自研社区9.0版本(以下简称OC9.0)。据了解,该版本由腾讯等十余家企业共同开发并长期维护,其内核及用户态软件均为自主选型、独立演进,在操作系统发行版的全链路均实现自主可控。​操作系统等基础软件是信息技术的根基,也是亟需实现突破,掌握......
  • Ubuntu系统python3.9.0安装dlib库的经历
    1.直接condainstalldlib或者是pipinstalldlib库,结果失败。2.根据一些搜索的内容提示先安装dlib依赖的库,再installdlib结果:安装了cmake,再执行dlib安装命令依然失败3.直接去dlib官网下载,dlib代码库,根据其他博客的提示下,编译,执行setup.py安装。结果:表面上成功,在python......
  • 小白也能搞定!Windows10上CUDA9.0+CUDNN7.0.5的完美安装教程
    前言:    为什么要在本地电脑安装CUDA,CUDA是什么的,用来做什么?我想,点击标题进来的小伙伴,应该都清楚这些。不管你是用来做什么,或者跟我一样为了跑Tensorflow的O......
  • Android 阿里云推送,针对安卓8.0、9.0以上系统收不到推送 的补丁文档
    官方的文档地址:Android8.0以上:https://help.aliyun.com/knowledge_detail/67398.htmlAndroid9.0以上:https://help.aliyun.com/knowledge_detail/141757.html......
  • .NET Core 3 Preview 2发布,C#8更强大的模式匹配
    英文原文:​​Announcing.NETCore3Preview2​​.NETCore3Preview2发布了,此版本主要带来了C#8相关的新功能,C#8Preview2是.NETCore3SDK的一部分。C#8......
  • 亿图思维导图Mind Master 9.0 中文破解版安装包下载及图文安装教程​
    MindMaster是亿图软件推出的最新多功能思维导图软件。该软件提供了丰富的智能布局和多样化的展示模式,结合精致的设计元素和预设的主题风格,努力帮助用户创造一个真正的效率......
  • 使用docker compose部署skyworking9.0
    catdocker-compose.yamlversion:'3.3'services:es8:image:elasticsearch:8.4.2container_name:es8ports:-9200:9200-9300:9300......