C#进阶(十)

发表于:2007-06-30来源:作者:点击数: 标签:
大家好,我是SUNWEN.今天下午得知,晚上要去当"更夫".呵呵,我们这个学校很是奇怪,要叫我们轮流去通宵巡逻,从晚上10:30到早上6:00.我有一个物理系的朋友,上次在田家炳楼门前找了一个宣传板,垫在下面就睡了一觉,听了笑死我了!哈哈! 现在我想说的是C#中的容器.这
     大家好,我是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,不好搞.

原文转自:http://www.ltesting.net