额 为啥写着东西?

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

经典的面试题:

能用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();
} }

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

最新文章

  1. [LeetCode] Peeking Iterator 顶端迭代器
  2. 不安装oracle客户端,用plsql连接oracle
  3. java 多态2
  4. ASP.NET MVC3入门教程之参数(数据)传递
  5. Ubuntu软件中心打不开,Encountered a section with no Package: header错误之解决
  6. 在aspx怎么引用public string getPicurl(string picurl)?
  7. nginx 反向代理 取得真实IP和域名
  8. LightOj 1245 --- Harmonic Number (II)找规律
  9. Java设计模式系列之中介者模式
  10. 表单验证插件jquery.validate的使用方法演示
  11. python中判断语句用两个or连接的奇葩
  12. document.createElement方法的使用
  13. react-router 离开路由前确认
  14. LINUX 软件管理
  15. 【转载】netstat--查看服务器[有效]连接数--统计端口并发数--access.log分析
  16. 【R】资源整理
  17. UIView的绘制原理
  18. FPGA-VHDL课堂学习笔记*01
  19. Netty实战八之引导
  20. [jzoj]3760.【BJOI2014】Euler

热门文章

  1. VirtualBox 使用
  2. python3 AttributeError: &#39;NoneType&#39; object has no attribute &#39;split&#39;
  3. 【翻译习作】 Windows Workflow Foundation程序开发-第一章02
  4. [Hibernate 1]Hibernate的环境搭建
  5. SQLServer、MySQL、Oracle语法差异小集锦
  6. WP8_(windows phone环境下)上传文件从C#到php接口
  7. Completely change MACE timestamps?
  8. Shiro使用总结
  9. IOS CLLocationManager定位反编码位置信息
  10. 浅谈JavaScript中的string拥有方法的原因