额 为啥写着东西?

有次面试去,因为用到的时候特别少 所以没记住, 这个单词 怎么写!

经典的面试题:

能用foreach遍历访问的对象的要求?

答:  该类实现IEnumetable 接口   声明 GetEnumerator 方法。

这是统一的答案 非常正直 不是嘛?

但是 你真正的写过 这个功能吗?

今天看MSDN 关于 IEnumetable   第一次看这个接口   没看明白 !   怎么办?  自己跟着写一次!  这个办法非常好,我特推荐!

命名规则就随便了, 别喷。

/// <summary>
/// 首先继承Ienumerable 接口
/// </summary>
public class Ns : IEnumerable
{ private List<object> list = new List<object>(); // 先定义委会的集合对象 private string name; private string age; private int id; public string Name
{
get
{
return this.name;
}
set
{
this.list.Add(value); // 特殊操作 赋值的时候将其先添加到维护的集合对象中
this.name = value;
}
} public string Age
{
get
{ return this.age;
}
set
{
this.list.Add(value); // 特殊操作 赋值的时候将其先添加到维护的集合对象中
this.age = value;
}
} public int Id
{
get
{ return this.id;
}
set
{
this.list.Add(value); // 特殊操作 赋值的时候将其先添加到维护的集合对象中
this.id = value;
}
} /// <summary>
/// 必须实现 GetEnumerator方法 更具返回类型 IEnumerator 来创建一个继承 IEnumerator接口的内部类
/// </summary>
/// <returns></returns>
public IEnumerator GetEnumerator()
{
return new NsIEnumerator(this);
} /// <summary>
/// IEnumerator接口的内部类 PS 该类其实就是对 维护着的集合对象做遍历操作的
/// </summary>
class NsIEnumerator : IEnumerator
{ private int ids = -; // 当前下标 private Ns n; // 传递过来的 需要遍历的类 public NsIEnumerator(Ns N)
{
this.n = N;
} public bool MoveNext() // 判断是否遍历完毕
{
this.ids++;
return (this.ids < this.n.list.Count);
} public void Reset() // 将下标重置
{
this.ids = -;
} public object Current // 这个就是通过变换的下标获取到的对应的 数据
{
get
{
return this.n.list[this.ids];
}
}
} static void Main(string[] args)
{ Ns n = new Ns(); n.Id = ;
n.Name = "liwen";
n.Age = ""; foreach (var n1 in n)
{
Console.WriteLine(n1);
} Console.ReadKey();
} }

没啥特别的 ,就是觉得可能很多人也和我一样知道这个功能 但是却自己没实现过。 贴上个来让那些人看一下。方便大家嘛

IEnumerable 接口 实现foreach 遍历 实例的更多相关文章

  1. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

  2. foreach为什么要实现IEnumerable接口而不是直接用IEnumerator接口

    在.Net中,要想被foreach遍历,那么目标对象要实现IEnumerable或IEnumerable<T>接口,这个接口有一个方法,GetEnumerator(),返回一个IEnume ...

  3. 通过IEnumerable接口遍历数据

    使用IEnumerable接口遍历数据,这在项目中会经常的用到,这个类型呢主要是一个枚举器. 1.首先需要让该类型实现一个名字叫IEnumerable的接口,实现该接口的主要目的是为了让当前类型中增加 ...

  4. C# 索引器,实现IEnumerable接口的GetEnumerator()方法

    当自定义类需要实现索引时,可以在类中实现索引器. 用Table作为例子,Table由多个Row组成,Row由多个Cell组成, 我们需要实现自定义的table[0],row[0] 索引器定义格式为 [ ...

  5. Foreach遍历

    前天在项目中遇到一个问题,foreach遍历过程中修改responses中的对象,其中responses的类型:IEnumerable<Order>,代码如下: foreach (Orde ...

  6. 使用yield关键字让自定义集合实现foreach遍历

    一般来说当我们创建自定义集合的时候为了让其能支持foreach遍历,就只能让其实现IEnumerable接口(可能还要实现IEnumerator接口) 但是我们也可以通过使用yield关键字构建的迭代 ...

  7. c#--foreach遍历的用法与split的用法

    一. foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成.in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素.      该循环 ...

  8. 你可能不知道的陷阱, IEnumerable接口

    1.  IEnumerable 与  IEnumerator IEnumerable枚举器接口的重要性,说一万句话都不过分.几乎所有集合都实现了这个接口,Linq的核心也依赖于这个万能的接口.C语言的 ...

  9. 实现Foreach遍历

    实现Foreach遍历的集合类,需要实现IEnumerable接口,泛型集合则需要实现IEnumerable<T>接口 using System; using System.Collect ...

随机推荐

  1. JAVA·多线程:创建线程的两种方式

    1.–扩展java.lang.Thread类 package multiThread; public class Thread02extThread { public static void main ...

  2. Flask框架学习笔记(API接口管理平台 V1.0)

    今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 ...

  3. 003.ASP.NET MVC集中管理Session

    原文链接:http://www.codeproject.com/Tips/790387/Session-in-ASP-NET-MVC 1.前言 今天有得有失啊,看到这篇,专心记下里面的精华吧 2.一般 ...

  4. Entity FrameWork 与 NHibernate

      1 Nhibernate 展示了NHibernate在数据库和用程序之间提供了一个持久层. 应用程序自己提供ADO.NET连接,并且自行管理事务.NHibernate体系结构如图1-51所示.它体 ...

  5. iOS iOS7 20px 处理

    - (void)viewWillAppear:(BOOL)animated { // View defaults to full size. If you want to customize the ...

  6. golang初体验

    使用golang开发已经有一个多月了,除了一开始遇到的各种小白问题,IDE的选择,gopath,goroot的配置...后边还算顺风顺水的.实践体验,golang真的适合快速开发.特别是后台开发,直接 ...

  7. 关于<html>标签里的class= no-js

    最近研究bootstrap的时候,发现了一个案例网站有一段 <html class="no-js"> 然后问了下度娘,找到了一篇大神的文章 里面对这个有很详细的解释: ...

  8. Linq to XML---网站地图和RSS Feed(ASP.NET的SEO)

    本系列目录网站地图的作用是让搜索引擎尽快的,更多的收录网站的各个网页.    这里我们首先要明白一个基本的原理,搜索引擎的爬行方式.整个互联网就像一张纵横交错的"网":网的各个节点 ...

  9. spinlock自旋锁de使用

    Linux内核中最常见的锁是自旋锁.一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁".如果锁可用,则"锁定"位被设置,而代码继 ...

  10. gulp sass使用

    var gulp = require("gulp");var sass = require("gulp-sass-china");var dgbl = requ ...