首页 > 编程语言 >C#入门(14)Switch语句

C#入门(14)Switch语句

时间:2024-08-25 16:55:25浏览次数:9  
标签:case 语句 Console 14 C# break grade Switch

前言

先前我们已经学了if语句,知道了他有一个相似的兄弟Switch,那我们就以他们的区别来进入本节的学习。

Switch和if都是用来控制程序的流程的条件语句,但是它们有一些区别。

  1. 语法结构:Switch语句由一个或多个case标签和一个可选的默认标签组成,每个case标签后面是要执行的语句序列。if语句只有一个条件和一个或多个要执行的语句。

  2. 判断条件:Switch语句通常用于多个离散的值的比较,而if语句通常用于比较表达式的真假。

  3. 多条件处理:Switch语句可以处理多个值的情况,每个case标签对应一个值。if语句可以处理多个条件,每个条件之间使用逻辑运算符连接。

  4. 可读性:当处理多个离散的值时,Switch语句的可读性比if语句要好。在这种情况下,使用Switch语句可以更清晰地表达代码的意图。

  5. 条件复杂性:if语句可以包含复杂的条件表达式和逻辑操作,可以满足更复杂的条件。Switch语句只能处理离散的值,无法处理复杂的条件。

总的来说,如果只需进行简单的条件判断,if语句足够满足需求。而当需要处理多个离散的值时,或者需要提高代码的可读性时,Switch语句更为适合。

tips:switch一般是配合枚举一起使用的,至于枚举是什么,你可以理解成是一种修缮代码的方式。而为什么会配合使用的原因,我们到后面学习了枚举后我们会进一步进行讲解。

1.作用:产生分支

2.基本语法

switch(变量)
{
    //变量等于一下常量时
    case 常量1://变量等于常量一时执行的逻辑
                代码逻辑
                break;

    case 常量2://变量等于常量二时执行的逻辑
                代码逻辑
                break;
    default://如果都不满足执行以下代码
            代码逻辑
            break;
}

其中default部分是可以省略的,常量部分也可以自己定义,只要当变量等于常量的时候,就会执行相应代码部分。

3.例子

我们从if语句开始,只要涉及到讲解代码方面的,博主都会尽量给一个例子来让大家更好理解,因为先前入门多是概念性问题,理解就行,但是到了这些代码逻辑方面,我个人觉得还是进例子聊大家清楚一些。

下面是一个使用Switch语句的C#例子,用于根据学生的分数对其成绩进行分类,也是一个很经典的题目:

using System;

class Program
{
    static void Main(string[] args)
    {
        int score;
        Console.Write("请输入学生的分数:");
        score = Convert.ToInt32(Console.ReadLine());

        string grade;
        switch (score)
        {
            case int n when (n >= 90 && n <= 100):
                grade = "优秀";
                break;
            case int n when (n >= 80 && n < 90):
                grade = "良好";
                break;
            case int n when (n >= 70 && n < 80):
                grade = "中等";
                break;
            case int n when (n >= 60 && n < 70):
                grade = "及格";
                break;
            default:
                grade = "不及格";
                break;
        }

        Console.WriteLine("学生的成绩分类为:" + grade);
    }
}

在这个例子中,我们首先通过Console.ReadLine()方法从用户输入中获取学生的分数,并将其转换为整数。然后,使用Switch语句对该分数进行分类。

Switch语句中的每个case都表示一个分数范围。在每个case中,我们使用when关键字进一步限制分数的范围,并将相应的成绩赋值给grade变量。最后,将学生的成绩分类输出到控制台上。

4.Switch的贯穿

作用:满足某些条件时,处理的逻辑一样,就可以使用贯穿

我们也进一个简单的小例子来细看吧

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("请输入一个数字:");
        int num = int.Parse(Console.ReadLine());

        switch (num)
        {
            case 1:
            case 2:
            case 3:
                Console.WriteLine("这是一个小数字");
                break;
            case 4:
            case 5:
            case 6:
                Console.WriteLine("这是一个中等数字");
                break;
            case 7:
            case 8:
            case 9:
                Console.WriteLine("这是一个大数字");
                break;
            default:
                Console.WriteLine("这是一个未知数字");
                break;
        }
    }
}
 

虽然这个代码写得笨笨的,但是你应该也能很好地感受到贯穿的效果,其实就是把一些情况直接归类,这个东西很多地方其实是不会看到的,博主在这里提出,也是希望大家能理解到一些实用的小技巧。

总结

我们学习的Switch内容不难,在日后的游戏开发中,它更多会用来开发一些复杂情况的甄选:状态机的切换是最为典型。

要明白,我们每天学的东西,在日后的某个地方一定会有帮助的,大厦始于地基。

共勉。

标签:case,语句,Console,14,C#,break,grade,Switch
From: https://blog.csdn.net/a6s686/article/details/141531178

相关文章

  • ChatGPT 如何让我变成了一名黑客
    有没有看过这样的电影:黑客只​​需敲几下键盘就能入侵最安全的系统,然后心想:“我希望我也能做到”?我知道我看过。虽然成为一名真正的黑客听起来可能有些牵强,但如果我告诉你,在ChatGPT的帮助下,我离这个梦想又近了一步,你会怎么想?这是一个关于人工智能模型如何帮助我探索令人着迷......
  • adc-ads1281驱动流程
            ADS1281是一款高性能、低功耗的模拟-数字转换器(ADC),关于其数据读写,从数据手册中获取的一些重要信息。1.时序        同步信号:上电SYNC引脚给出一个高低脉冲后挂载多个ADS1281后,同一个DREADY信号控制从机数据同步。2.连续读数据模式     ......
  • C#如何开发通过USB进行串口通讯的Androud上位机
    使用C#在windows上进行串口通讯应该是相当简单的,在.net里面有SerialPort类。但是假如不是windows,而是在Android上开发一个连接串口设备而进行通讯的软件?也是可以的,但是需要去了解一下.net中如何开发Android应用。一.准备通讯线一般Android手机基本都有TypeC口,首先需要一根OTG转......
  • patch-package|npm补丁修复
    可以用来修复依赖代码缺陷,或者按照自己需求做一点小东西做小改动可以,大改动最好还是fork仓库发包1.开发环境安装npmipatch-package--save-dev2.手动去node_module中修改(我要修改fastify的代码)3.修改完成后,为fastify生成补丁npxpatch-packagefastify4.加......
  • SmartDeviceControl_FreeRTOS_Hal_Zet6
    SmartDeviceControl_FreeRTOS_Hal_Zet6系统框图显示子设备框图我们不想让文件互相调用遇到的问题:OLED无响应,I2C无法工作解决:使用的是软件I2C,问题在于OLED的驱动中已经包含获取从机应答的函数更新:屏幕为2.8TFT-LCD使用FSMC来模拟8080并口驱动LCDFSMC_D0-FSMC_D......
  • 芯片、GPU、CPU、显卡、显存、x86、ARM、AMD等基础知识
    1.芯片芯片指的是半导体材料制成的集成电路,可以包含一个或多个电子元件、电路或系统。芯片可以是任何电子设备的组成部分,不仅限于CPU,还包括GPU、内存芯片、存储控制器、网络接口等。GPU和CPU是两种最常见的特定的芯片。它们分别针对图形处理和通用计算任务进行了优化。2.CPU......
  • 反汇编和汇编的区别 怎么用汇编让C语言更小
    在计算机编程的世界中,反汇编和汇编这两个概念往往令人感到深奥而神秘。究竟反汇编和汇编之间有何异同?这是程序员们经常探讨的话题。汇编语言作为一种底层编程语言,与计算机硬件密切相关,而反汇编则是将机器码还原为可读的汇编语言的过程。本文将深入研究反汇编和汇编的区别,帮助......
  • 【CSP:202212-2】训练计划(Java)
    题目链接202212-2训练计划题目描述求解思路模拟:over表示能否按时完成所有训练项目rely[i]表示第i个项目的依赖项目编号(每个项目最多有一个依赖项目)days[i]用来记录第i个项目完成需要的天数allDays[i]表示加上该项目的所有前置依赖项(包含其依赖项目的依赖项目),完成......
  • Graphics2D绘图方法总结
    一、简介在开发中可能会遇到这样一类场景,业务复杂度不算太高,技术难度不算太深,但是做起来就很容易把人整破防,伤害很高侮辱性很强的:绘图。绘图最怕有人挑刺:这里变形,那里不对,全图失真。最近在处理这样一个场景,使用Java的Graphics2D类,绘制业务需要的图形模板,然后在具体流程中填充数......
  • 【逐行注释】基于CV/CT模型的IMM|MATLAB程序|源代码复制后即可运行,无需下载
    订阅专栏后可以直接查看完整的源代码(和注释),无需付费下载或其他的操作。代码复制到MATLAB上面可以得到和我一样的运行结果。文章目录程序概述完整代码与逐行注释运行结果解释按模块分析代码程序概述基于EKF的多模型交互。以CV和CT两个模型进行交互,这里对代码进......