C#进阶(十)

C#进阶(十)


Author: SUNWEN  &;nbspFrom:Internet


                大家好,我是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:    //引用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,不好搞.  (2005-6-17:06:51)
 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 警告:持续变种木马正在发起农历新年攻势!
 您可能对 [C#] 的这些文章也感兴趣:
寻找最快的大文件拷贝方法
多线程带智能采集策略的采集系统
C#2.0中的泛型学习
用于统计函数执行时间的类
Visual C#2005中使用正则表达式
C#低级Windows API钩子拦截键盘输入
用C#实现基于TCP协议的网络通讯
防止winform假死新技术,visual studio 2005自带的控件
理解C# 3.0新特性之Extension方法浅议
关于C#中委托的学习
Visual C# .Net环境中编程实现浮动工具栏
C#中提供的VB不支持的新特性