大家好,我是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,不好搞.