C#进阶教程(十)

发布时间:2013-09-19 11:33:46来源:阅读(1498)

    大家好,我是SUNWEN.今天下午得知,晚上要去当"更夫".呵呵,我们这个学校很是奇怪,要叫我们轮流去通宵巡逻,从晚上10:30到早上6:00.我有一个物理系的朋友,上次在田家炳楼门前找了一个宣传板,垫在下面就睡了一觉,听了笑死我了!哈哈! 

      现在我想说的是C#中的容器.这是一个非常重要的话题,因为不管你写什么样的程序,你都不能不与容器打交道.什么是容器呢.容器就是可以容纳东西的东西,在C#和JAVA这种面向对象的编程语言中,容器就被称为可以容纳对象的东东,不是说"一切都是对象吗?"以前,我一个搞C++的程序员朋友告诉我,JAVA中的容器太好用了,比C++好用多了.而作为JAVA的后来者的C#毫无疑问,它的容器功能肯定也是很强大的.

      foreach语句是遍历容器的元素的最简单的方法.我们可以用System.Collections.IEnumerator类和System.Collections.IEnumerable接口来使用C#中的容器,下面有一个例子,功能是字符串分割器.

    000: // CollectionClasses\tokens.cs
    001: using System;
    002: using System.Collections;
    003:
    004: public class Tokens : IEnumerable
    005: {
    006: private string[] elements;
    007:
    008: Tokens(string source, char[] delimiters)
    009: {
    010: elements = source.Split(delimiters);
    011: }
    012:
    013: file://引用IEnumerable接口014:
    015: public IEnumerator GetEnumerator()
    016: {
    017: return new TokenEnumerator(this);
    018: }
    019:
    020: 
    021:
    022: private class TokenEnumerator : IEnumerator
    023: { 
    024: private int position = -1;
    025: private Tokens t;
    026:
    027: public TokenEnumerator(Tokens t)
    028: {
    029: this.t = t;
    030: }
    031:
    032: public bool MoveNext()
    033: {
    034: if (position < t.elements.Length - 1)
    035: {
    036: position++;
    037: return true;
    038: }
    039: else
    040: {
    041: return false;
    042: }
    043: }
    044:
    045: public void Reset()
    046: {
    047: position = -1;
    048: }
    049:
    050: public object Current
    051: {
    052: get
    053: {
    054: return t.elements[position];
    055: }
    056: }
    057: }
    058:
    059: // 测试060:
    061: static void Main()
    062: {
    063: Tokens f = new Tokens("This is a well-done program.", new char[] {’ ’,’-’});
    064: foreach (string item in f)
    065: {
    066: Console.WriteLine(item);
    067: }
    068: }
    069: }


      这个例子的输出是:

    This
    is
    a
    well
    done
    program.


      好了,这一节就说到这了.现在环境不太好,旁边一大帮同学在看VCD,不好搞.

关键字

上一篇: C#进阶(十一)

下一篇: C#进阶教程(九)