| 
| 技术资料  > .Net专区 > C#语言 : SUNWEN教程之----C#进阶(十) |  
SUNWEN教程之----C#进阶(十) March 25,2004 |  
大家好,我是SUNWEN.今天下午得知,晚上要去当"更夫".呵呵,我们这个学校很是奇怪,要叫我们轮流去通宵巡逻,从晚上10:30到早上6:00.我有一个物理系的朋友,上次在田家炳楼门前找了一个宣传板,垫在下面就睡了一觉,听了笑死我了!哈哈! 
 
现在我想说的是C#中的容器.这是一个非常重要的话题,因为不管你写什么样的程序,你都不能不与容器打交道.什么是容器呢(倒!).容器就是可以容纳东西的东西(再倒!),在C#和JAVA这种面向对象的编程语言中,容器就被称为可以容纳对象的东东,不是说"一切都是对象吗?"以前,我一个搞C++的程序员朋友告诉我,JAVA中的容器太好用了,比C++好用多了.而作为JAVA的后来者的C#毫无疑问,它的容器功能肯定也是很强大的. 
 
foreach语句是遍历容器的元素的最简单的方法.我们可以用System.Collections.IEnumerator类和System.Collections.IEnumerable接口来使用C#中的容器,下面有一个例子,功能是字符串分割器. 
 
000: // CollectionClassestokens.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,不好搞. 
         
         |  
 
 |