| SUNWEN教程之----C#进阶10 |
|
| 现在我想说的是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,不好搞.
|
|