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
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