首页 > 编程语言 >c#中switch常用模式

c#中switch常用模式

时间:2023-11-06 11:02:56浏览次数:32  
标签:case 常用 Console c# value break switch WriteLine

声明模式

首先检查value的类型,然后根据类型输出相应的消息

public void ShowMessage(object value)
{
    switch (value)
    {
        case int i: Console.WriteLine($"value is int:{i}"); break;
        case long l: Console.WriteLine($"value is long:{l}"); break;
        case bool b: Console.WriteLine($"value is bool:{b}"); break;
        case string s: Console.WriteLine($"value is string:{s}"); break;
        default: Console.WriteLine($"value is object"); break;
    }
}

类型模式

类型模式可以理解为在声明模式中使用了弃元:  

public void ShowMessage(object value)
{
    switch (value)
    {
        case int: Console.WriteLine($"value is int"); break;
        case long: Console.WriteLine($"value is long"); break;
        case bool: Console.WriteLine($"value is bool"); break;
        case string: Console.WriteLine($"value is string"); break;
        default: Console.WriteLine($"value is object"); break;
    }
}

常量模式

  常量模式可以理解为原来C#6.0及之前的用法:  

switch (score)
{
    case 10:
    case 9:
        Console.WriteLine("优秀");
        break;
    case 8:
        Console.WriteLine("良好");
        break;
    case 7:
    case 6:
        Console.WriteLine("及格");
        break;
    default:
        Console.WriteLine("不及格");
        break;
}

关系模式  

switch(score)
{
    case >=80:
        Console.WriteLine("excellent");
        break;
    case >=60:
        Console.WriteLine("good");
        break;
    default:
        Console.WriteLine("poor");
        break;
}

逻辑模式  

switch(value)
{
    case 0:
        Console.WriteLine("value is 0");
        break;
    case not 0 and(100 or - 100):
        Console.WriteLine("abs(value)==100");
        break;
    case not 0 and( > 0 and < 100):
        Console.WriteLine("value is positive and less than 100");
        break;
    case not 0 and > 0:
        Console.WriteLine("value is positive and greater than 100");
        break;
    case <-100 or( < 0 and > -100):
        Console.WriteLine("value is negative and not equals -100");
        break;
}

属性模式

switch(time)
{
    case {
        Year: 2020 or 2021,
        Month: <= 6,
        Day: 1
    }
    t:
        Console.WriteLine($ "the first day of every month in the first half of 2020 and 2021");
        break;
    case {
        Year: not 2022
    }:
        Console.WriteLine($ "not 2022");
        break;
    case {
        DayOfWeek: not DayOfWeek.Sunday and not DayOfWeek.Saturday
    }:
        Console.WriteLine($ "recursion");
        break;
}

位置模式

  位置模式采用解构的特性来说明指定的模式是否匹配:  

public record Point2D(int X, int Y); //记录可以解构
static void Print(Point2D point)
{
    switch(point)
    {
        case( > 0, > 0):
            Console.WriteLine("first quadrant");
            break;
        case( < 0, > 0):
            Console.WriteLine("second quadrant");
            break;
        case( < 0, < 0):
            Console.WriteLine("third quadrant");
            break;
        case( > 0, < 0):
            Console.WriteLine("fourth quadrant");
            break;
        default:
            Console.WriteLine("coordinate axis");
            break;
    }
}

Var模式

  Var模式往往和属性模式和位置模式结合,用于提取属性变量值:  

switch(point)
{
    case(var x,
        var y,
            var z):
        Console.WriteLine($ "3D point:({x},{y},{z})");
        break; //在位置模式中使用
    case Point2D
    {
        X: var x, Y: var y
    }:
        Console.WriteLine($ "2D point:({x},{y})");
        break; //在属性模式中使用
    default:
        Console.WriteLine("others");
        break;
}

弃元模式

  弃元模式在switch语句中用的不多,但是在switch表达式中使用的多:  

var result = score
switch
{ >= 80 => "excellent", >= 60 => "good",
        _ => "poor" //弃元在switch表达式中就相当于default
};

标签:case,常用,Console,c#,value,break,switch,WriteLine
From: https://blog.51cto.com/u_12828212/8202276

相关文章

  • Linux下内存buff/cache占用过多问题解决
    在Linux下经常会遇到buff/cache内存占用过多问题,如果buff/cache占用过大的,free空闲内存就很少,影响使用;通常内存关系是:普通机器:total=used+free虚拟机器:total=used+free+buff/cache这个时候可以看到buff/cache占用的内存非常大,这个时候可以使用一下命令去清除一下cache内存echo1>......
  • CRM系统使用率低的原因有哪些?
     在企业级SaaS细分赛道中,CRM客户管理系统拥有25%的覆盖率,遥遥领先于ERP、协同办公、人力资源、财税软件。如此庞大的市场空间仍掩饰不了一个现实状况——过低的CRM使用率。那么导致CRM系统使用率低的原因有哪些?CRM使用率低的表现1、开了账号却不用,账号放过期;2、常用的功能少......
  • CRM怎样助力企业营销管理?
     CRM助力企业营销管理,为企业降本增效提升投入产出比。CRM软件是如何实现的呢?扩大线索量想要精准获客的第一步是要扩大线索量,多渠道营销推广是很好的方法。例如:1.线下展会+线上Webinar等市场活动2.搭建微信、微博、小程序、官网等社交媒体矩阵3.老客户引荐、熟人推荐4.邮......
  • 半导体基础SECS协议(SECS-I)
    阅读导言可知,在SECS协议的基础结构中,SECS-I是一项物理链路协议,采用了R232串口的物理连接方式,定义设备在链路上使用的消息格式以及一些消息交互行为。以下介绍将大致以消息传输与消息格式两部分进行。1.消息传输-物理传输*:STARTBitLSB1 2 3 4......
  • C++使用冒泡排序算法对数组进行排序
     #include<iostream>//包含iostream库usingnamespacestd;//使用标准命名空间intmain(){//主函数intarr[]={5,3,2,8,6,7,1,4};//定义并初始化数组intn=sizeof(arr)/sizeof(arr[0]);//计算数组长度//使用冒泡排序算法对数组进......
  • 如何利用CRM软件打造高效团队
     对于一家企业来说团队配合紧密,沟通无障碍是业绩增长的基础,要做到高效率团队协作除了需要管理者制定策略还要依赖数字化工具的加成,比如利用CRM软件打造高效团队。直观展示工作进度大多数企业每个月都要制作工作报告、频繁召开会议不断的整理客户资料才能让管理者掌控业务团队......
  • CRM软件:如何高效培育销售线索?
     通过线索培育可以挖掘出更多CRM软件销售管道中的有价值客户提高销售业绩。但机遇与挑战总是共存的,培育线索要从不同的渠道执行大量重复性的操作,人为操控不仅速度慢而且容易出错,那么企业如何高效培育销售线索?发送个性化邮件我们知道不同的行业领域有不同的产品偏好,因此销售......
  • CRM系统使用率低?如何提高
    CRM客户管理系统采购以后不投入使用,或者用了却用不好,都是极大的浪费。在知道CRM系统使用率低的原因之后,就要通过有效的方法提升CRM使用率。下面整理了六个方法,告诉您如何提高CRM系统的使用率。有人演奏不出优美的曲子,就怪罪乐器不好。在商业领域,太多人纠结于工具的好坏和软件使......
  • 网页CAD SDK 集成后怎么实现参数化绘图(在线编辑CAD)
    前言MxCAD 的WEBCADSDK提供了参数化绘图的功能,我们可以通过查看继承自McDbEntity的类的所有实例,它们都可以进行参数化的绘图。首先我们应该在页面上显示一张图纸,请根据mxcad入门文档的说明或者通过查看github|gitee存储的初始化各种示例项目查看代码来实现显示图纸的页......
  • IDEA 常用操作快捷键
    一、构建/编译Ctrl+F9:构建项目该快捷键,等同于菜单【Build】—>【BuildProject】执行该命令后,IntelliJIDEA会编译项目中所有类,并将编译结果输出到out目录中。IntelliJIDEA支持增量构建,会在上次构建的基础上,仅编译修改的类。Ctrl+Shift+F9:重新编译当前类该快捷......