C#基础之Foreach
下面是Foreach的介绍。
如何让一个类可以用Foreach来遍历呢。
结论:让这个类实现IEnumerable接口。
这个类有一个public的GetEnumerator的实例方法,并且返回类型中有public 的bool MoveNext()实例方法和public的Current实例属性。
public class Car {
private string _name;
private double _capacity; //汽车排量 public string Name { get {
return this._name;
}
set {
//忽然想到这个value指代的是啥
this._name = value;
}
} public double Capacity {
get {
return this._capacity;
}
set {
this._capacity = value;
}
} public Car(string name,double capacity) {
this._capacity = capacity;
this._name = name;
}
}
public class MyTest {
Car[] carArray = new Car[4];
public MyTest() {
carArray[0] = new Car("221",101);
carArray[1] = new Car("222", 102);
carArray[2] = new Car("223", 103);
carArray[3] = new Car("224", 104);
}
}
看到这里我们可能会想到可以这么做
MyTest test=new MyTest();
foreach(var i in test)... 确定这样可行吗?
经过测试,我们知道上面是不可行的,错误提示:该命名空间下没有公共的GetEnumerator()定义。
为了解决这个错误,我们做了如下:
根据错误提示可以知道,他需要公共的GetEnumerator();所以我给他加了个公共的GetEnumerator();
public class MyTest {
Car[] carArray = new Car[4];
public MyTest() {
carArray[0] = new Car("221",101);
carArray[1] = new Car("222", 102);
carArray[2] = new Car("223", 103);
carArray[3] = new Car("224", 104);
} /// <summary>
/// 通过这个例子,可以明白了很多东西呀。
/// </summary>
/// <returns></returns>
public IEnumerator GetEnumerator() {
return this.carArray.GetEnumerator();
}
}
经过测试刚好可行,再继续测试可以得到上面的结论二,这里只是因为数组本来里面就实现了moveNext方法和current;
还有一种方法是:直接实现IEnumerable接口,道理也是一样的。
上下文关键字 value
用在普通属性声明的 set 访问器中。 此关键字类似于方法的输入参数。 关键字 value
引用客户端代码尝试赋给属性的值。
顺带提一下value这个东东
private int _num
public int num
{
get
{
return _num;
}
set(int value) //其实value就是类似于一个参数传递过来
{
_num=value;
}
}
C#基础之Foreach的更多相关文章
- [c#基础]集合foreach的必要条件和自定义集合
引言 最近翻看了之前的学习笔记,看到foreach,记得当时老师讲的时候,有点犯浑,不是很明白,这好比,上小学时,你不会乘法口诀,但是随着时间的增长,你不自觉的都会了,也悟出个小道理,有些东西,你当时 ...
- Java基础(6):foreach 方法遍历数组
foreach 并不是 Java 中的关键字,是 for 语句的特殊简化版本,在遍历数组.集合时, foreach 更简单便捷.从英文字面意思理解 foreach 也就是“ for 每一个”的意思,那 ...
- 【Java基础】foreach循环
从一个小程序说起: class lesson6foreach { public static void main(String[] args) { int array[]={2,3,1,5,4,6}; ...
- 001——数组(一)数组知识及foreach函数应用
<?php /**数组(一)数组知识及foreach函数应用*/ /*数组:在一个变量中,存储一个或多个值,每一个元素都有一个访问ID * * */ /* * //索引型数组 $arr=arra ...
- JavaScript实现Map、Reduce和Filter
1. [代码][JavaScript]代码 <script type="text/javascript">// 函数式编程:// 描述我们要做什么,而不是我们如 ...
- jsp(3,6,9) EL表达式及JSTL
1. jsp 1.1jsp是什么 全称: Java Server Pages,java服务器页面.和Servlet一样,是sun公司定义的一种动态网页开发技术. 特点:基于html模版,可以在h ...
- MyBatis基础入门《二十》动态SQL(foreach)
MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...
- (JavaScript基础向)日常小发现:forEach等函数的第二个参数的用法
forEach函数用得平时用得比较多,但是从来没想到forEach函数还有第二个参数. 这里是菜鸟教程对forEach函数的详细说明:forEach的详细说明. 如上图,forEach函数有第二个参数 ...
- 易优CMS:foreach的基础用法
[基础用法] 名称:foreach 功能:数据/记录循环输出标签(注:类似与volist标签,只是更加简单,没有太多额外的属性.) 语法: {eyou:channel type='top'} {e ...
随机推荐
- 经典面试题:分布式缓存热点KEY问题如何解决--有赞方案
有赞透明多级缓存解决方案(TMC) 一.引子 1-1. TMC 是什么 TMC ,即"透明多级缓存( Transparent Multilevel Cache )",是有赞 Paa ...
- [WAF攻防]从WAF攻防角度重看sql注入
从WAF攻防角度重看sql注入 攻防都是在对抗中逐步提升的,所以如果想攻,且攻得明白,就必须对防有深刻的了解 sql注入的大体流程 Fuzz测试找到注入点 对注入点进行过滤检测,及WAF绕过 构建pa ...
- IoC容器-Bean管理XML方式(引入外部属性文件)
IoC操作Bean管理(引入外部属性文件) 1,直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池依赖jar包 2,通过引入外部属性文件配置数据库连接池 (1)创建外部属性文件,pro ...
- 运维利器-ClusterShell集群管理
在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...
- linux中awk命令(最全面秒懂)
目录 一:linux中awk命令 1.awk命令简介 2.awk作用 3.awk的语法格式 4.解析awk使用方法 5.参数 6.awk的生命周期 二:awk中的预定义变量 三:awk运行处理规则的执 ...
- Android开发-页面布局
首页布局 首页是ListView的布局 这个还需要制作ListView组件和适配器来显示数据. 关于页面 关于页面显示的是软件的基本信息和软件制作者的信息 这个就是采用基本的页面布局就行.
- plsql 普通游标
-- ①普通游标:操作步骤 边敲边想 学无止境 /* 游标:指针:内存中的一块数据缓冲区,上下文: 将查询到的结果集缓存起来,便于进行逐行定位处理. 使用完成后要及时关闭: 操作步骤? 1.定义游标 ...
- 微服务架构 | 10.3 使用 Zipkin 可视化日志追踪
目录 前言 1. Zipkin 基础知识 1.1 Zipkin 链路监控的原理 2. 下载 Zipkin 服务器 2.1 下载 zipkin-server-2.12.9-exec.jar 包 2.2 ...
- ApacheCN - 关于我们
1.简单介绍一下 ApacheCN? ApacheCN 是 2016 年 8 月份就开始搭建网站雏形, 2017 年 6 月份正式全职来做,是国内第一个有组织性.敢带人装逼.敢真的分享.并且敢戴绿帽的 ...
- ApacheCN Pandas 教程集
Pandas 秘籍 零.前言 一.Pandas 基础 二.数据帧基本操作 三.开始数据分析 四.选择数据子集 五.布尔索引 六.索引对齐 七.分组以进行汇总,过滤和转换 八.将数据重组为整齐的表格 九 ...