当前位置: 首页 > news >正文

学习c#的第六天

目录

C# 判断

if 语句

嵌套 if 语句

switch 语句

嵌套 switch 语句

? : 运算符

C# 循环

循环类型

while 循环

for/foreach 循环

do...while 循环

嵌套循环

循环控制语句

break 语句

continue 语句

无限循环


C# 判断

if 语句

在C#中,if语句用于根据条件执行代码块。它的基本语法结构如下:

if (condition)
{// 如果条件为真,执行这里的代码
}

在这个结构中,condition是一个布尔表达式,如果它的值为true,那么紧跟在它后面的花括号内的代码块将会被执行。

除了最基本的if语句,C#还提供了其他几种变体,比如if-else语句和if-else if-else语句,用于处理多个条件的情况。

if-else语句的结构如下:

if (condition)
{// 如果条件为真,执行这里的代码
}
else
{// 如果条件为假,执行这里的代码
}

if-else if-else语句的结构如下:

if (condition1)
{// 如果条件1为真,执行这里的代码
}
else if (condition2)
{// 如果条件2为真,执行这里的代码
}
else
{// 如果以上条件都不为真,执行这里的代码
}

在编写if语句时,务必注意花括号的使用,尤其是在多行代码块中。

代码示例

using System;public class Program
{public static void Main(){int z = 7;if (z < 5){Console.WriteLine("z小于5");}else if (z == 5){Console.WriteLine("z等于5");}else{Console.WriteLine("z大于5");}}
}

嵌套 if 语句

嵌套if语句是指在if语句的代码块内部再包含一个或多个if语句。这种结构通常用于处理更复杂的条件逻辑。以下是一个简单的示例:

using System;public class Program
{public static void Main(){int num = 10;if (num > 0){Console.WriteLine("num大于0");if (num % 2 == 0){Console.WriteLine("num是偶数");}else{Console.WriteLine("num是奇数");}}else{Console.WriteLine("num不大于0");}}
}

在这个示例中,外部的if语句检查num是否大于0,如果是,则执行外部if语句的代码块。在外部if语句的代码块内部,又包含了一个if-else语句,用于判断num是偶数还是奇数。

switch 语句

在C#中,switch语句用于根据表达式的值选择不同的执行路径。它的基本语法结构如下:

switch (expression)
{case value1:// 当表达式的值等于value1时执行这里的代码break;case value2:// 当表达式的值等于value2时执行这里的代码break;// 更多case语句default:// 如果表达式的值不匹配任何case时执行这里的代码break;
}

在这个结构中,expression是一个表达式,它的值会被和每个case后面的value进行比较。如果找到了匹配的value,则执行相应的代码块。如果没有找到匹配的value,则执行default标签后的代码块(default标签是可选的)。

以下是一个简单的示例:

 

using System;public class Program
{public static void Main(){int day = 3;switch (day){case 1:Console.WriteLine("星期一");break;case 2:Console.WriteLine("星期二");break;case 3:Console.WriteLine("星期三");break;default:Console.WriteLine("其他");break;}}
}

在这个示例中,根据day的值,选择不同的执行路径输出相应的星期几信息。 

嵌套 switch 语句

在C#中,可以嵌套switch语句,这意味着在一个switch语句的case块内部使用另一个switch语句。这种结构可以用于处理更复杂的条件逻辑。

以下是一个简单的示例:

using System;public class Program
{public static void Main(){int category = 2;int item = 3;switch (category){case 1:switch (item){case 1:Console.WriteLine("选择了类别1的物品1");break;case 2:Console.WriteLine("选择了类别1的物品2");break;default:Console.WriteLine("类别1中没有这个物品");break;}break;case 2:switch (item){case 1:Console.WriteLine("选择了类别2的物品1");break;case 2:Console.WriteLine("选择了类别2的物品2");break;default:Console.WriteLine("类别2中没有这个物品");break;}break;default:Console.WriteLine("其他类别");break;}}
}

在这个示例中,外部的switch语句根据category的值选择不同的执行路径,而在每个case块内部又包含了一个嵌套的switch语句,用于根据item的值进一步选择执行路径。

? : 运算符

我们已经在前面讲解了 条件运算符 ? :,可以用来替代 if...else 语句。它的一般形式如下:

condition ? expr1 : expr2

其中,condition 是一个布尔表达式,如果它的值为 true,则整个表达式的值为 expr1;如果 condition 的值为 false,则整个表达式的值为 expr2。

以下是一个简单的示例:

using System;public class Program
{public static void Main(){int num = 10;string result = (num > 0) ? "正数" : "非正数";Console.WriteLine(result);  // 输出:"正数"}
}

在这个示例中,如果num大于0,则result的值为"正数";否则result的值为"非正数"。

条件运算符通常用于简单的条件判断,并且可以嵌套使用以构建复杂的条件逻辑。

C# 循环

循环类型

while 循环

在C#中,while 循环用于在指定条件为真时重复执行代码块。其基本语法结构如下:

while (condition)
{// 在条件为真时执行的代码// 通常会在循环体内修改条件,以便在某个时刻终止循环
}

在这个结构中,condition 是一个布尔表达式,当它的值为 true 时,循环体内的代码会被执行。在每次循环迭代之后,都会重新检查 condition 的值,如果它仍然为 true,则继续执行循环体内的代码;否则循环终止。

以下是一个简单的示例:

using System;public class Program
{public static void Main(){int count = 0;while (count < 5){Console.WriteLine("当前计数值为:" + count);count++;}}
}

在这个示例中,当 count 小于 5 时,循环体内的代码会被执行,并且在每次循环迭代之后 count 的值会递增,直到 count 不再小于 5 时循环终止。

while 循环适用于当循环次数未知但循环条件已知或者循环次数受其他变量控制的情况。需要注意的是,如果循环条件永远不为假,将导致无限循环,因此必须在循环体内部有机制来改变循环条件,以确保循环最终会结束。

for/foreach 循环

在C#中,for 循环和 foreach 循环用于重复执行代码块,但它们的应用场景和语法略有不同。

1、for 循环

for 循环通常用于已知循环次数的情况,其基本语法结构如下:

for (initialization; condition; iterator)
{// 循环体内的代码
}

其中:

  • initialization 用于初始化循环控制变量,通常是一个赋值表达式,用于设置循环的起始条件。
  • condition 是一个布尔表达式,用于定义循环继续执行的条件。
  • iterator 用于更新循环控制变量的值,通常是对循环控制变量进行增量或减量操作。

以下是一个简单的示例:

using System;public class Program
{public static void Main(){for (int i = 0; i < 5; i++){Console.WriteLine("当前计数值为:" + i);}}
}

在这个示例中,for 循环会从 i=0 开始,当 i<5 时,执行循环体内的代码,并且在每次循环迭代之后 i 的值会递增,直到 i 不再小于 5 时循环终止。

2、foreach 循环

foreach 循环用于遍历集合类型(如数组、列表等)中的元素,其基本语法结构如下:

foreach (var item in collection)
{// 对集合中的每个元素执行的代码
}

其中 collection 是一个集合类型的对象,item 是在循环过程中用来存储当前元素的变量。

以下是一个示例,展示了如何使用 foreach 遍历数组:

using System;public class Program
{public static void Main(){int[] numbers = { 1, 2, 3, 4, 5 };foreach (int number in numbers){Console.WriteLine("当前数字为:" + number);}}
}

在这个示例中,foreach 循环会遍历数组 numbers 中的每个元素,并将当前元素的值存储在 number 变量中,然后执行循环体内的代码。

总结来说,for 循环适用于已知循环次数的情况,而 foreach 循环适用于遍历集合类型中的元素。

do...while 循环

在C#中,do...while 循环和 while 循环类似,都是用于重复执行代码块直到指定条件不再满足。不同之处在于,do...while 循环会先执行一次循环体内的代码,然后再检查循环条件是否满足。其基本语法结构如下:

do
{// 循环体内的代码
}
while (condition);

在这个结构中,循环体内的代码会先被执行,然后再检查 condition 的值。只有在 condition 为 true 时,循环才会继续执行;否则循环终止。

以下是一个简单的示例:

using System;public class Program
{public static void Main(){int count = 0;do{Console.WriteLine("当前计数值为:" + count);count++;}while (count < 5);}
}

在这个示例中,无论 count 是否小于 5,循环体内的代码都会被执行至少一次。之后,才会根据 count < 5 的条件决定是否继续执行循环。

do...while 循环适用于需要保证循环体内的代码至少执行一次的情况,而且循环是否继续执行取决于条件是否满足。与 while 循环相比,do...while 循环在某些场景下更方便,因为它可以确保循环体内的代码至少被执行一次。

嵌套循环

嵌套循环是指在一个循环结构内部再包含另一个循环结构,以此来实现更复杂的重复执行逻辑。在 C# 中,可以通过嵌套 for、while、do...while 或者混合使用多种类型的循环来实现嵌套循环。

以下是一个简单的示例,展示了如何使用嵌套循环生成九九乘法表:

using System;public class Program
{public static void Main(){for (int i = 1; i <= 9; i++){for (int j = 1; j <= i; j++){Console.Write($"{j} * {i} = {j * i}\t");}Console.WriteLine();}}
}

在上面的示例中,外层循环控制乘法表的行数,内层循环控制每一行的输出内容。通过嵌套循环,可以依次输出1*1,1*2.........,以此类推,最终得到完整的九九乘法表。

嵌套循环通常用于处理多维数据、图形输出、遍历二维数组等场景,能够帮助我们处理更为复杂的循环逻辑。但需要注意的是,嵌套循环会增加代码的复杂度,可能导致性能损耗,

循环控制语句

在C#中,break 和 continue 语句是用于控制循环行为的关键工具。

break 语句

break 语句用于立即终止包含它的最内层循环(for、while、do...while),并且跳出该循环执行循环后面的代码。例如:

using System;public class Program
{public static void Main(){for (int i = 0; i < 10; i++){if (i == 5){break; // 当 i 等于 5 时终止循环}Console.WriteLine(i);}}
}

在这个示例中,当 i 的值等于 5 时,break 语句会立即退出循环,不再执行循环体内 Console.WriteLine(i); 后面的代码。

continue 语句

continue 语句用于立即跳过循环体内剩余的代码,直接进入下一次循环的迭代。例如:

using System;public class Program
{public static void Main(){for (int i = 0; i < 5; i++){if (i == 2){continue; // 当 i 等于 2 时跳过当前迭代}Console.WriteLine(i);}}
}

在这个示例中,当 i 的值等于 2 时,continue 语句会跳过 Console.WriteLine(i);,直接进行下一次循环迭代。

break 和 continue 语句通常与条件语句结合使用,用于根据特定条件来控制循环的执行流程。

无限循环

无限循环是指在程序执行过程中,循环条件一直保持为真,导致循环体内的代码反复执行而无法停止的情况。在C#中,编写无限循环的常见方式是使用 while 或者 for 循环,并且省略了导致循环条件变为假的更新语句或者条件判断语句。例如:

// 无限循环示例(慎用,可能导致系统资源耗尽)
while (true)
{// 无限循环体
}// 或者使用 for 循环
for (;;)
{// 无限循环体
}

在上面的示例中,while (true) 和 for (;;) 都是典型的无限循环结构,它们会使循环体内的代码永远执行下去。

然而,应该注意到无限循环可能导致严重的问题,例如系统资源耗尽、程序无响应等。因此,如果要使用无限循环,务必要有明确的终止循环的条件,并且确保在适当的时候跳出循环,以免造成程序异常或系统负担过重。

using System;class Program
{static void Main(){int count = 0;// 无限循环while (true){Console.WriteLine("正在执行无限循环,当前计数为: " + count);count++;// 当计数达到10时跳出循环if (count == 10){Console.WriteLine("达到计数上限,跳出循环。");break; // 跳出循环}}Console.WriteLine("循环结束,程序继续执行其他代码。");}
}

在这个示例中,我们使用了 while (true) 来创建一个无限循环。在循环体内部,我们输出当前计数的信息,并模拟一些处理,然后递增计数器。当计数器达到10时,我们使用 break 语句跳出循环,程序继续执行后续的代码。

需要注意的是,无限循环应该慎重使用,确保在合适的时机能够跳出循环,避免造成资源浪费或程序陷入无响应状态。

相关文章:

学习c#的第六天

目录 C# 判断 if 语句 嵌套 if 语句 switch 语句 嵌套 switch 语句 ? : 运算符 C# 循环 循环类型 while 循环 for/foreach 循环 do...while 循环 嵌套循环 循环控制语句 break 语句 continue 语句 无限循环 C# 判断 if 语句 在C#中&#xff0c;if语句用于根…...

第七章 :Spring Boot web开发常用注解(二)

第七章 :Spring Boot web开发常用注解(二) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个章节,可以作为web开发工程师注解参考手册,SpringBoot常用注解大全,一目了然!。本…...

IOC - Google Guice

Google Guice是一个轻量级的依赖注入框架&#xff0c;专注于依赖注入和IoC&#xff0c;适用于中小型应用。 Spring Framework是一个全面的企业级框架&#xff0c;提供了广泛的功能&#xff0c;适用于大型企业应用。 是吧&#xff01;IOC 容器不止Spring,还有Google Guice,来体…...

国际阿里云:Linux实例负载高问题排查和异常处理!!!

问题描述 在您使用ECS实例过程中&#xff0c;可能会遇到实例系统负载较高的情况&#xff0c;负载过高&#xff0c;可能会引发一系列异常问题&#xff0c;简单说您如下&#xff1a; CPU使用率或负载过高&#xff1a;一般来说&#xff0c;当CPU使用率≥80%时&#xff0c;定义为C…...

【数据结构】二叉树的遍历递归算法详解

二叉树的遍历 &#x1f4ab;二叉树的结点结构定义&#x1f4ab;创建一个二叉树结点&#x1f4ab;在主函数中手动创建一颗二叉树&#x1f4ab;二叉树的前序遍历&#x1f4ab;调用栈递归——实现前序遍历&#x1f4ab;递归实现中序和后序遍历 &#x1f4ab;二叉树的结点结构定义 …...

百度王颖:百度文库以AI创作能力突破语言边界,促进思想碰撞和文化融通

1月9日&#xff0c;2023年世界互联网大会乌镇峰会“网络传播与文明交流互鉴论坛”召开。百度副总裁、互娱和垂类平台负责人王颖出席并发表“以技术搭建跨文化交流桥梁”主题演讲。她表示&#xff0c;在大模型的加持下&#xff0c;百度各个产品都在重构&#xff0c;通过技术助力…...

人工智能基础_机器学习023_理解套索回归_认识L1正则---人工智能工作笔记0063

然后上一节我们说了L1,L2正则是为了提高,模型的泛化能力, 提高泛化能力,实际上就是把模型的公式的w,权重值,变小对吧. 然后我们这里首先看第一个L1正则,是怎么做到把w权重变小的 可以看到最上面是线性回归的损失函数,然后 L1可以看到,这个正则,就是在损失函数的基础上给损失…...

Learning an Animatable Detailed 3D Face Model from In-The-Wild Images论文笔记

Learning an Animatable Detailed 3D Face Model from In-The-Wild Images论文笔记 论文目标:提出一个端到端的框架,可以从非受控的图片中学习高质量、可动画的3D人脸模型。论文方法:论文结果:论文意义: 论文目标:提出一个端到端的框架,可以从非受控的图片中学习高质量、可动画…...

Lenovo联想小新Air-14笔记本2021款AMD锐龙ALC版(82LM)原装出厂Win10镜像和Windows11预装OEM系统

下载链接&#xff1a;https://pan.baidu.com/s/1akLkXM2HIg3eO76jqM-LVA?pwdxvo6 提取码&#xff1a;xvo6 系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1a;…...

在程序中链接静态库

现在我们把上面src目录中的add.cpp、div.cpp、mult.cpp、sub.cpp编译成一个静态库文件libcalc.a。 add_library(库名称 STATIC 源文件1 [源文件2] ...) link_libraries(<static lib> [<static lib>...]) 参数1&#xff1a;指定出要链接的静态库的名字 可以是全…...

TortoiseSVN 状态图标不显示的两种解决办法

文章目录 TortoiseSVN 方式解决注册表方式解决 TortoiseSVN 方式解决 在桌面或者资源管理器中鼠标右键打开 TortoiseSVN 设置选择 Icon Overlays (图标覆盖)Status cache&#xff08;状态缓存&#xff09; 选择 ‘Shell’ 选择 Icon Overlays&#xff08;图标覆盖&#xff09;…...

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘

文章目录 前言001[鹤城杯 2021]easy_crypto002[强网拟态 2021]拟态签到题003[SWPUCTF 2021 新生赛]crypto8004[SWPUCTF 2021 新生赛]crypto7005[SWPUCTF 2021 新生赛]crypto6006[SWPUCTF 2021 新生赛]ez_caesar007[SWPUCTF 2021 新生赛]crypto10008[鹤城杯 2021]A_CRYPTO009[SW…...

Day03:注意事项、this关键字、构造器、JavaBean、String、ArrayList

OOP的注意事项 类名要跟class文件名一致&#xff08;一个class可以有多个类&#xff0c;但只有一个public&#xff0c;且与文件名一致&#xff09;&#xff0c;命名介意大驼峰&#xff1b;如果某个对象没有变量指向他&#xff0c;就成垃圾对象了&#xff08;空指针&#xff09…...

【从0到1设计一个网关】性能优化---缓存

文章目录 为什么要用缓存?Caffeine Cache使用Caffeine效果演示为什么要用缓存? 首先先了解一下为什么在网关中我们需要用到缓存。 我们可以从如下几点来入手这个问题: 处理大规模流量: 网关是系统的入口,需要处理大规模的请求流量。高性能的网关能够快速而有效地处理大量…...

Typescript -尚硅谷

基础 1.ts是以js为基础构建的语言&#xff0c;是一个js的超集(对js进行了扩展)&#xff1b; 2.ts(type)最主要的功能是在js的基础上引入了类型的概念; Js的类型是只针对于值而言&#xff0c;ts的类型是针对于变量而言 Ts可以被编译成任意版本的js&#xff0c;从而进一步解决了…...

以 Kubernetes 原生方式实现多集群告警

作者&#xff1a;向军涛、雷万钧 来源&#xff1a;2023 上海 KubeCon 分享 可观测性来源 在 Kubernetes 集群上&#xff0c;各个维度的可观测性数据&#xff0c;可以让我们及时了解集群上应用的状态&#xff0c;以及集群本身的状态。 Metrics 指标&#xff1a;监控对象状态的量…...

2023年A股借壳上市研究报告

第一章 借壳上市概况 1.1 定义 借壳上市作为一种独特的资本市场操作手法&#xff0c;历来是企业拓展融资渠道和实现市场战略目标的重要途径。具体来说&#xff0c;借壳上市可分为狭义与广义两种模式。在狭义的定义下&#xff0c;借壳上市是指一家已上市的公司的控股母公司&am…...

【TiDB】TiDB CLuster部署

目录 0 大纲 一 集群部署工具TiUP简介 1 TiUP 简介 2 TiUP使用 3 TiUP使用举例 二 TiDB Cluster安装配置需求 1 生产环境硬件需求 2 操作系统需求 三 TIDB部署 1 软硬件需求以及前置检查​编辑 2 安装TiUP 组件 ​3 集群拓扑文件 4 执行部署命令 &#xff08;1&…...

odoo16 库存初始化 excel导入问题

最近在为一家公司实施odoo时&#xff0c;发现库存模块实施过程中按用户实际&#xff0c;产品初始化就是个问题。下面一一记录下 一个新公司&#xff0c;产品都有上百种&#xff0c;甚致几千种&#xff0c;如何把现有产品数据录入系统就是个不小的活。odoo16是有导入导出功能不…...

2023.11.11 关于 Spring 中 Bean 的作用域

目录 Bean 的作用域 作用域的定义 Singleton&#xff08;单例作用域&#xff09; Prototype&#xff08;原型作用域&#xff09; Request&#xff08;请求作用域&#xff09; Session&#xff08;会话请求&#xff09; Application&#xff08;全局作用域&#xff09; …...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...