Foreach 原理
public class Person
{
private string[] friends = { "asf", "ewrqwe", "ddd", "eeee" };
public string name { get; set; } public int age { get; set; }
//这是第一种方法
public IEnumerable ForEach()
{
for (int i = ; i < friends.Length; i++)
{
yield return friends[i];
}
}
}
调用
class Program
{
static void Main(string[] args)
{
Person p = new Person(); foreach (var item in p.ForEach())
{
Console.WriteLine(item);
} Console.Read();
}
}
第二种 方法
class Program
{
static void Main(string[] args)
{
Person p = new Person(); foreach (var item in p)
{
Console.WriteLine(item);
} Console.Read();
}
} public class Person
{
private string[] friends = { "asf", "ewrqwe", "ddd", "eeee" };
public string name { get; set; } public int age { get; set; } //这是第二种
////当返回值类型是IEnumerator时,
//编译器帮我们生成了一个“枚举器”类,
//即:一个实现了IEnumerator接口的类型。
public IEnumerator GetEnumerator()
{
for (int i = ; i < friends.Length; i++)
{
yield return friends[i];
}
}
}
class Program
{
static void Main(string[] args)
{
Person p = new Person(); foreach (var item in p)
{
Console.WriteLine(item);
} Console.Read();
}
} public class Person
{
private string[] friends = { "asf", "ewrqwe", "ddd", "eeee" };
public string name { get; set; } public int age { get; set; } //这是第二种
////当返回值类型是IEnumerator时,
//编译器帮我们生成了一个“枚举器”类,
//即:一个实现了IEnumerator接口的类型。
public IEnumerator GetEnumerator()
{
return new PersonEnumerator(friends);
}
} //枚举器
public class PersonEnumerator : IEnumerator
{
private string[] frends;
//使用构造函数 传值
public PersonEnumerator(string[] fs)
{
frends = fs;
}
private int index = -; public object Current
{
get
{
if (index >= && index < frends.Length)
{
return frends[index];
}
else
{
throw new NotImplementedException();
}
}
} public bool MoveNext()
{
if (index + < frends.Length)
{
index++;
return true;
}
return false;
} public void Reset()
{
index = -; } }
Foreach 原理的更多相关文章
- Foreach原理
本质:实现了一个IEnumerable接口, 01.为什么数组和集合可以使用foreach遍历? 解析:因为数组和集合都实现了IEnumerable接口,该接口中只有一个方法,GetEnumerato ...
- .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化
1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...
- Array.forEach原理,仿造一个类似功能
Array.forEach原理,仿造一个类似功能 array.forEach // 设一个arr数组 let arr = [12,45,78,165,68,124]; let sum = 0; // ...
- 浅析foreach原理
在日常开发工作中,我们发现很多对象都能通过foreach来遍历,比如HashTable.Dictionary.数组等数据类型.那为何这些对象能通过foreach来遍历呢?如果写一个普通的Person类 ...
- C#学习笔记:foreach原理
这篇随笔是对上一篇随笔C#关键字:yield的扩展. 关于foreach 首先,对于 foreach ,大家应该都非常熟悉,这里就简单的描述下. foreach 语句用于对实现 System.Col ...
- C#foreach原理
本文主要记录我在学习C#中foreach遍历原理的心得体会. 对集合中的要素进行遍历是所有编码中经常涉及到的操作,因此大部分编程语言都把此过程写进了语法中,比如C#中的foreach.经常会看到下面的 ...
- C# foreach 原理以及模拟的实现
public class Person:IEnumerable //定义一个person类 并且 实现IEnumerable 接口 (或者不用实现此接口 直接在类 //里面写个GetEnu ...
- 涉及 C#的 foreach问题
当时是用foreach实现遍历,但是函数传入参数是Object类型的,由于Objectl类型没有实现相关接口,所以foreach并不能执行. 那么下面我们来看看,想要使用foreach需要具备什么条件 ...
- mybatis foreach 循环 list(map)
直接上代码: 整体需求就是: 1.分页对象里面有map map里面又有数组对象 2.分页对象里面有list list里面有map map里面有数组对象. public class Page { pri ...
随机推荐
- 如何防止应用因获取IDFA被AppStore拒绝
由于Appstore禁止不使用广告而采集IDFA的app上架,友盟提供IDFA版和不含IDFA版两个SDK,两个SDK在数据上并没有差异,采集IDFA是为了防止今后因为苹果可能禁止目前使用的openu ...
- 【总结】.Net面试题集锦(一)
一.背景 最近一直在准备面试,收到的面试邀请邮件里还有面试题,真是要当面霸的节奏,不过看看也好,一方面能够锻炼锻炼生锈的脑子,查缺补漏一下,另一方面,万一靠这几个面试题拿到offer呢,哈哈.开个玩笑 ...
- github 相关英语
github 相关英语 repository n. 仓库 A repository contains all the files for your project, including the rev ...
- python面向对象一
1.1三种编程方法论 1.面向过程:把复杂的任务一步一步分解成简单的任务. 2.函数式编程:思想上接近于数学运算,根据某种方式,根据方式得出的结果. 3.面向对象编程:一种编程方式,需要使用" ...
- python之生成器
def repeater(value): while True: new = yield value print(first, new) if new is not None: value = new ...
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档,具体会影响:对标记attributes .propertie ...
- C# GetType与typeof
在反射和泛型中经常会使用到Type类,获取Type的最常用的方法是 obj.GetType(),和typeof(T).在获取泛型的type时有些小坑. public static void Main( ...
- throttle和debounce简单实现
function debounce(delay,fn){ var timer; return function(){ var ctx = this,args = arguments; clearTim ...
- Apache Shiro 学习记录2
写完上篇随笔以后(链接).....我也想自己尝试一下写一个Strategy.....Shiro自带了3个Strategy,教程(链接)里作者也给了2个.....我想写个都不一样的策略.....看来看去 ...
- Demo 版
Demo1 美食网站 Demo2 12301智慧旅游公共服务平台 Demo3 react_and_koa example