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

C# 探险之旅:第十一节 - 循环(foreach):一场“遍历”奇幻岛的大冒险!

嘿,勇敢的探险家们!欢迎来到C#奇幻岛的第十一站——“遍历”奇幻岛!今天,我们要乘坐一艘叫做foreach的魔法船,去遍历(也就是一个一个看过来)岛上那些神秘的宝藏箱!准备好了吗?让我们扬帆起航!

1. foreach是什么?它是怎么来的?

想象一下,你站在一堆五彩斑斓的宝藏箱前,每个箱子里都有不同的宝贝。你想看看每个箱子里到底有啥,但又不想一个个手动打开(那太累了!)。这时,foreach这位魔法船长就出现了,它说:“嘿,交给我,我能带你快速浏览每一个箱子!”

foreach是C#里的一种循环语句,专门用来遍历集合中的每一个元素,比如数组、列表或者其他集合类型。它不需要你记住当前是第几个箱子,也不需要你手动跳到下一个箱子,一切都自动进行,是不是很神奇?

2. foreach的使用秘籍

要使用foreach,你需要遵循三个简单的步骤:

  1. 指定要遍历的集合:告诉foreach你想要遍历哪个宝藏堆。
  2. 定义一个变量来存放当前元素:这个变量就像是你从箱子里拿出来的宝贝,每次循环都会更新。
  3. 在循环体内操作这个变量:看看这个宝贝,摸摸那个宝贝,或者做点其他什么。

看,语法就像这样简单:

foreach (var item in collection)
{// 在这里处理每个item
}
  • collection是你的宝藏堆,可以是数组、列表等。
  • item是你每次从箱子里拿出来的宝贝。
  • 大括号{}里是你对每个宝贝要做的操作。
3. 实战演练:遍历一个数组

假设我们有一个存放宝藏的数组treasures,里面都是字符串类型的宝藏名称。我们来用foreach遍历它:

string[] treasures = { "金币", "银币", "宝石", "古老地图" };foreach (var treasure in treasures)
{Console.WriteLine("我找到了:" + treasure);
}

这段代码就像是说:“对于treasures数组里的每一个treasure,我都要在控制台上大喊一声‘我找到了:’加上这个宝藏的名字!”运行后,你会看到控制台上一行行显示出每个宝藏的名字。

 

 前面,我们学过了 if 语句,这里我们还可以在foreach循环中加入判断呢,我们来看一下修改后的代码:

string[] treasures = { "金币", "银币", "宝石", "古老地图" };foreach (var treasure in treasures)
{if (treasure== "宝石") continue;if (treasure == "古老地图") break;Console.WriteLine("我找到了:" + treasure);
}

运行结果:

 这段程序说明:

  • string[] treasures = { "金币", "银币", "宝石", "古老地图" };

    • 定义并初始化一个名为treasures的字符串数组,包含四个元素:"金币", "银币", "宝石", 和 "古老地图"
  • foreach (var treasure in treasures)

    • 开始一个foreach循环,它会遍历treasures数组中的每一个元素。在每次迭代中,当前元素会被赋值给变量treasure
  • if (treasure == "宝石") continue;

    • 检查当前的treasure是否等于"宝石"。如果是,则执行continue语句,这会导致循环立即跳过当前迭代的剩余部分,继续下一次迭代。因此,如果treasure"宝石",那么下面的代码将不会被执行,程序将继续检查下一个元素。
  • if (treasure == "古老地图") break;

    • 检查当前的treasure是否等于"古老地图"。如果是,则执行break语句,这会导致整个foreach循环立即终止,即使还有未遍历的元素。因此,一旦遇到"古老地图",循环就会结束,不再处理之后的任何元素(如果有的话)。
  • Console.WriteLine("我找到了:" + treasure);

    • 如果上述两个条件都不满足,即treasure既不是"宝石"也不是"古老地图",则会执行这条语句,输出一条信息到控制台,说明找到了哪个宝藏。
  • 在第一次迭代中,treasure"金币",所以它会打印出"我找到了:金币"
  • 在第二次迭代中,treasure"银币",所以它会打印出"我找到了:银币"
  • 在第三次迭代中,treasure"宝石",此时会触发continue语句,导致这次迭代提前结束,直接进入下一次迭代,因此"宝石"不会被打印。
  • 在第四次迭代中,treasure"古老地图",此时会触发break语句,导致循环提前结束,因此"古老地图"也不会被打印。

综上所述,这段代码只会输出找到"金币""银币"的信息,而"宝石""古老地图"都不会被输出。小伙伴们,你们懂了吗?

4. 注意事项:别掉进陷阱里!
  • 只读访问foreach循环中的变量(比如上面的treasure)是只读的,你不能在循环里修改它的值。想要修改?那得用其他循环语句,比如for循环。
  • 类型安全:虽然可以用var关键字让编译器自动推断类型,但明确知道集合里元素的类型是个好习惯,这样可以避免一些类型转换的错误。
结语

好了,勇敢的探险家们,今天的“遍历”奇幻岛之旅就到这里啦!你学会了如何使用foreach这位魔法船长,快速浏览集合中的每一个元素。接下来,还有更多C#奇幻岛的秘密等着你去发现。记得带上你的勇气和智慧,我们下一站再见!

相关文章:

C# 探险之旅:第十一节 - 循环(foreach):一场“遍历”奇幻岛的大冒险!

嘿,勇敢的探险家们!欢迎来到C#奇幻岛的第十一站——“遍历”奇幻岛!今天,我们要乘坐一艘叫做foreach的魔法船,去遍历(也就是一个一个看过来)岛上那些神秘的宝藏箱!准备好了吗&#x…...

Ubuntu24.04配置STMTrack

项目地址:https://github.com/fzh0917/STMTrack 一、安装 CUDA 参考链接: Ubuntu24.04配置DINO-Tracker Ubuntu多CUDA版本安装及切换 由于之前在其他项目中已经安装了 CUDA12.1,这次需要安装另一个版本。 1. 查看安装版本 按照 requireme…...

【Java学习笔记】Map接口和常用方法

一、 Map接口实现类的 特点[很实用] key是自己存的java对象 value是一个固定的 //当有相同的 k ,就等价于替换. 二、 Map常用方法 (根据键–>k) 三、Map接口遍历方法 package com.hspedu.map_; import java.util.*; /** * author 韩顺平 * ver…...

uniapp支持App横竖屏开发总结

一、需求: app要支持重力感应自动切换横竖屏,并切换后样式不能错乱 二、实现 官方文档 官方Git manifest.json文件中 "app-plus" : {"screenOrientation" : ["portrait-primary","portrait-secondary","…...

【工作笔记】Lombok版本变化导致的反序列化异常

Lombok版本变化导致的反序列化异常 背景 因为安全性的考虑,最近在梳理旧系统的系统依赖。改动依赖时候还好,毕竟只是换掉不再合作公司的旧依赖,没敢动别的太多东西。不过没多久,测试团队就找来了… 排查问题之第一次跑偏 旧系…...

多模态大语言模型 MLLM 部署微调实践

1 MLLM 1.1 什么是 MLLM 多模态大语言模型(MultimodalLargeLanguageModel)是指能够处理和融合多种不同类型数据(如文本、图像、音频、视频等)的大型人工智能模型。这些模型通常基于深度学习技术,能够理解和生成多种模…...

LNMP和Discuz论坛

文章目录 LNMP和Discuz论坛1 LNMP搭建1.1 编译安装nginx服务1.1.1 编译安装1.1.2 添加到系统服务 1.2 编译安装MySQL服务1.2.1 准备工作1.2.2 编辑配置文件1.2.3 设置路径环境变量1.2.4 数据库初始化1.2.5 添加mysqld系统服务1.2.6 修改mysql的登录密码 1.3 编译安装PHP服务1.3…...

Cadence学习笔记 2 PCB封装绘制

基于Cadence 17.4,四层板4路HDMI电路 更多Cadence学习笔记:Cadence学习笔记 1 原理图库绘制 目录 2、PCB封装绘制 2、PCB封装绘制 封装尺寸如下。 用Allegro做PCB封装前,要先做焊盘(Allegro 比AD、PADS多一个步骤:绘制…...

网络安全——防火墙

基本概念 防火墙是一个系统,通过过滤传输数据达到防止未经授权的网络传输侵入私有网络,阻止不必要流量的同时允许必要流量进入。防火墙旨在私有和共有网络间建立一道安全屏障,因为网上总有黑客和恶意攻击入侵私有网络来破坏,防火…...

【CSS in Depth 2 精译_074】第 12 章 CSS 排版与间距概述 + 12.1 间距设置(下):行内元素的间距设置

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 12.1.1 使用 em 还是 px12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 ✔️ 12.2 Web 字体12.3 谷歌字体 文章目…...

短视频矩阵抖音SEO源码OEM独立部署

短视频优化矩阵源码涉及对抖音平台上的视频内容进行筛选与排序,目的是增强其在搜索引擎中的可见度,以便更多用户能够浏览到这些视频。而抖音SEO优化系统则是通过构建一个分析框架,来解析抖音上的用户数据、视频信息及标签等元素,并…...

使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像

文章目录 应用快速部署NginxRedisMySQLTomcat 制作镜像镜像原理基于已有容器创建使用 Dockerfile 创建镜像指令说明构建应用创建 Dockerfile 文件创建镜像 应用快速部署 Nginx docker run -d -p 80:80 nginx使用浏览器访问虚拟机地址 Redis docker pull redis docker run --…...

在ensp中ACL路由控制实验

一、实验目的 掌握ACL路由控制管理 二、实验要求 要求: 配置路由策略,左右两边不公开区域对方不可达,其他区域可以互相ping通 设备: 1、三台路由器 2、四台交换机 3、四台电脑 4、四台服务器 使用ensp搭建实验环境,如图所…...

μC/OS-Ⅱ源码学习(3)---事件模型

快速回顾 μC/OS-Ⅱ中的多任务 μC/OS-Ⅱ源码学习(1)---多任务系统的实现 μC/OS-Ⅱ源码学习(2)---多任务系统的实现(下) 本文开始,进入事件源码的学习。 事件模型 在一个多任务系统里,各个任务在系统的统筹下相继执行,由于执行速度极快&a…...

Jmeter进阶篇(30)深入探索 JMeter 监听器

前言 在性能测试领域里,Apache JMeter 是一款经典而强大的工具,而其中的监听器(Listeners)组件更是发挥着不可或缺的关键作用。 监听器就像敏锐的观察者,默默记录测试执行过程中的各种数据,作为系统性能分析的数据依据。 本文将带你全方位走进 JMeter 监听器的奇妙世界,…...

虚幻引擎的工程目录结构

虚幻引擎的工程目录结构如下: .idea/.vs:用于IDE(如IntelliJ IDEA或Visual Studio)的项目配置文件,包含工程设置和解决方案文件。 Binaries:存放编译后的可执行文件和相关的动态链接库(DLL&…...

深度学习中的yield

以下为例: def data_iter(batch_size, features, labels):num_examples len(features)indices list(range(num_examples))# 这些样本是随机读取的,没有特定的顺序random.shuffle(indices)for i in range(0, num_examples, batch_size):batch_indices …...

数据库数据恢复—ORACLE常见故障有哪些?如何恢复数据?

Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。 Oracle数据库数据恢复方案: 1、检测存放数据库的服务器/存储设备是否存…...

使用JavaScrip和HTML搭建一个简单的博客网站系统

搭建一个简单的博客网站系统,我们需要创建几个基本的页面和功能:登录、注册、文章发布等。这里我们先实现一个基础版本,包括用户登录、注册以及文章发布的功能。由于这是一个简化版的示例,我们将所有逻辑集成在一个HTML文件中&…...

算法-字符串-76.最小覆盖子串

一、题目 二、思路解析 1.思路: 滑动窗口!!! 2.常用方法: 无 3.核心逻辑: 1.特殊情况:s或t是否为空字符串 if(snull||tnull)return ""; 2.声明一个字符数组——用于记录对应字符出现…...

Python爬虫之Selenium的应用

【1】Selenium基础介绍 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driv…...

粉丝生产力与开源 AI 智能名片 2+1 链动模式商城小程序的融合创新与价值拓展

摘要:本文聚焦于粉丝生产力在当代文化与商业语境中的独特作用,并深入探讨其与开源 AI 智能名片 21 链动模式商城小程序的有机结合。通过剖析粉丝生产力的多元表现形式、内在驱动机制以及开源 AI 智能名片 21 链动模式商城小程序的功能特性与商业潜力&…...

红黑树(Red-Black Tree)

一、概念 红黑树(Red Black Tree)是一种自平衡的二叉搜索树,通过添加颜色信息来确保在进行插入和删除操作时,树的高度保持在对数级别,从而保证了查找、插入和删除操作的时间复杂度为 O(log n)。这种树可以很好地解决普…...

Cocos 资源加载(以Json为例)

resources 通常我们会把项目中需要动态加载的资源放在 resources 目录下,配合 resources.load 等接口动态加载。你只要传入相对 resources 的路径即可,并且路径的结尾处 不能 包含文件扩展名。 resources.load("Inf", JsonAsset, (error, ass…...

解决 IntelliJ IDEA 启动错误:插件冲突处理

引言 在使用 IntelliJ IDEA 进行开发时,我们可能会遇到各种启动错误。本文将详细介绍一种常见的错误:插件冲突,并提供解决方案。 错误背景 最近,有用户在启动 IntelliJ IDEA 时遇到了一个错误,提示信息为&#xff1a…...

SQL——DQL分组聚合

分组聚合: 格式: select 聚合函数1(聚合的列),聚合函数2(聚合的列) from 表名 group by 标识列; ###若想方便分辨聚合后数据可在聚合函数前加上标识列(以标识列进行分组) 常见的聚合函数: sum(列名):求和函数 avg(列名)…...

Ripro V5日主题 v8.3 开心授权版 wordpress主题虚拟资源下载站首选主题模板

RiPro主题全新V5版本,是一个优秀且功能强大、易于管理、现代化的WordPress虚拟资源商城主题。支持首页模块化布局和WP原生小工具模块化首页可拖拽设置,让您的网站设计体验更加舒适。同时支持了高级筛选、自带会员生态系统、超全支付接口等众多功能&#…...

分布式搜索引擎之elasticsearch基本使用2

分布式搜索引擎之elasticsearch基本使用2 在分布式搜索引擎之elasticsearch基本使用1中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以j接下来,我们研究下…...

java学习-第十五章-IO流(java.io包中)

一、理解 1. 简单而言:流就是内存与存储设备之间传输数据的通道、管道。 2. 分类: (1) 按方向(以JVM虚拟机为参照物)【重点】 输入流:将中的内容读入到中。 输出流:将中的内容写入到中。 (2) 按单位: 字节流&#xf…...

企业如何实现数据从源端到消费端的全链路加工逻辑可视化?

要想实现数据加工链路的可视化,血缘图谱无疑是一个有效的工具。血缘图谱能够清晰地展示数据从产生、流转、加工到最终消费的每一个环节,帮助企业直观地理解数据之间的关联和依赖关系,轻松追溯数据来源和去向,并在数据出现问题时快…...

微信推广网站建设/游戏推广公司靠谱吗

在信息技术高速发展的时代里,计算机证尤为重要,那么计算机一级考什么呢。以下是由出国留学网编辑为大家整理的“计算机一级考什么内容有哪些”,仅供参考,欢迎大家阅读。计算机一级考什么内容 有哪些1. 采用无纸化考试,上机操作。考…...

网站规划和建设的步骤/建立网站平台需要多少钱

一、什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Seleni…...

公司 宜宾网站建设/重庆网站建设推广

目录sequence相关宏及其实现uvm_do系列宏*uvm_create与uvm_send*uvm_rand_send系列宏*start_item与finish_item*pre_do、 mid_do与post_dosequence相关宏及其实现 uvm_do系列宏 uvm_do系列宏主要有以下8个: uvm_do(SEQ_OR_ITEM) uvm_do_pri(SEQ_OR_ITEM, PRIORIT…...

网站版权 备案icp/注册网址在哪里注册

消息队列适合解决的问题参考文章: (1)消息队列适合解决的问题 (2)https://www.cnblogs.com/chjxbt/p/11377402.html (3)https://www.codeprj.com/blog/ad9afa1.html 备忘一下。...

小说网站静态页面模板/长沙专业做网站公司

最近研究设置数据,稍微总结一下,以后继续补充: 在一个18摸AIX上跑的一台11g的库,检查的时候发明视图V$UNDOSTAT的数据很诡异,第1条的记载时光段竟然一直没有被切割过,开始时光是2011-12-26 09:52:08结束时光…...

wordpress国外主题安装/站长工具seo综合查询降级

同样使用 graphics.h 图形库&#xff0c;相比openGL要低级&#xff0c;适合初学者玩玩的。 加入了背景音乐。 问题&#xff1a;如何将黑色的背景色从开始就改为白色&#xff1f; 1 //走迷宫22 3 #include <graphics.h>4 #include <conio.h>5 #include <stdio.h&…...