0

0

C#中foreach实例代码

零下一度

零下一度

发布时间:2017-06-24 10:00:11

|

2485人浏览过

|

来源于php中文网

原创

foreach可以遍历一些数据类型。由图可知,被遍历的数据类型必须拥有getenumerator的公共方法。

在使用foreach遍历时涉及到var推断类型,这时如何不是实现泛型版本,则一律是object类型。

foreach遍历只能读取数据,不能修改数据,可以通过string检测,string是可遍历的,但是组成它的char是不能改变的。(只在次情景下)。

foreach遍历只进,一条一条往下读,和操作数据库的DataReader的Read方法类似。

 

由上面的分析可知,需要在类的内部定义IEnumerator方法,才能被遍历。这里有两个办法解决。

方法一、通过yield

yield return 表达式;如果返回值为IEnumerable则表示自动生成一个可迭代类型。

如果返回值为IEnumerator则表示自动生成一个迭代器。其中IEnumerator类型就一个迭代器。

遍历时能以此拿到上图中person数组的值。

方法二 通过实现IEnumerable接口

IEunmerable包括GetEunmetator的方法,并且返回值是IEnumerator的类型。

此时就需要另外一个类去继承IEnumerator接口,这样才能返回它的子类,即可达到目的。

实现过程:

1.需要添加int类型的变量,用于标记索引的位置。这里用int position=-1。

jQuery搜索框实例绑定提交事件源代码
jQuery搜索框实例绑定提交事件源代码

jQuery搜索框实例绑定提交事件源代码

下载

2.添加对应的数组变量,用于接收传过来的数组。这里用string[] persion;

3.实现的Curren属性,需要返回当前索引的数据。return person[position];

4.实现MoveNext方法,需要将指针(索引)加1,向前移动,返回值是bool类型,用于确定是否操作了索引。

5.实现Reset方法,这是重置方法,把position赋值为-1;

6.添加一个带参数的构造函数,其中接收传递过来的数据。

三、List集合分析

通过反射工具可知,List集合的Add方法就是给内部的item添加值,而这个item是一个数组。因为是泛型的,所以显示为T。

也就是其中集合的内部有这样一个变量,用来存储添加进来的数据,也就像上面自己定义的数组一样,这样List集合类就和上述

自定义的类一致了,上述的定义只是为了演示过程,当然出于业务的需求,是可以自己去实现扩展上述类的,例如把静态的数据

改变为Add方法添加,筛选数据的逻辑等,都可以根据业务需求进行扩展。

 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

19

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

27

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

15

2026.02.03

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

3

2026.02.03

漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

13

2026.02.03

Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口
Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口

本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。

114

2026.02.03

Java 设计模式与重构实践
Java 设计模式与重构实践

本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。

3

2026.02.03

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2

2026.02.03

Python 强化学习与深度Q网络(DQN)
Python 强化学习与深度Q网络(DQN)

本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。

3

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 8.4万人学习

C 教程
C 教程

共75课时 | 4.5万人学习

C++教程
C++教程

共115课时 | 15.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号