Posted on 2009-07-30 09:45
Hero 阅读(263)
评论(0) 编辑 收藏 引用 所属分类:
C#积累
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 using System.Collections;
6
7 namespace CSharp
8 {
9 public class Tokens : IEnumerable
10 {
11 private string[] elements;
12
13 public Tokens( string source, char[] delimiters )
14 {
15 //将字符串分析为标记
16 elements = source.Split( delimiters );
17 }
18
19 // IEnumerable 接口实现
20 // 声明 IEnumerable 所需的GetEnumerator() 方法
21 public IEnumerator GetEnumerator()
22 {
23 return new TokenEnumerator( this );
24 }
25 // 内部实现 IEnumerator 接口
26 private class TokenEnumerator : IEnumerator
27 {
28 private int position = -1;
29 private Tokens t;
30
31 public TokenEnumerator( Tokens t )
32 {
33 this.t = t;
34 }
35
36 //声明 IEnumerator 所需的 MoveNext() 方法
37 public bool MoveNext()
38 {
39 if ( position < t.elements.Length - 1 )
40 {
41 position++;
42 return true;
43 }
44 else
45 {
46 return false;
47 }
48 }
49
50 //声明 IEnumerator 所需的 Reset 方法
51 public void Reset()
52 {
53 position = -1;
54 }
55
56 //声明 IEnumerator 所需的 Current 属性
57 public object Current
58 {
59 get
60 {
61 return t.elements[position];
62 }
63 }
64 }
65 }
66
67
68 class Program
69 {
70 static void Main( string[] args )
71 {
72 Tokens f = new Tokens( "This is a well-done program.",
73 new char[] { ' ', '-'} );
74
75 foreach ( string item in f )
76 {
77 Console.WriteLine( item );
78 }
79 }
80 }
81 }
82