C# 中实现 foreach 功能

1. MySplit 类
    /// <summary>
    
/// MySplit 类
    
/// </summary>
    public class MySplit : IEnumerable
    {
        
private string[] elements;

        
public MySplit(string source, char[] delimiters)
        {
            elements 
= source.Split(delimiters);
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            
return new MyEnumerator(this);
        }

        
#region 在嵌套类中实现 IEnumerator 接口
        
/// <summary>
        
/// 在嵌套类中实现 IEnumerator 接口,以便以后方便创建多个枚举
        
/// </summary>
        public class MyEnumerator : IEnumerator
        {
            
private int position = -1;
            
private MySplit t;

            
public MyEnumerator(MySplit t)
            {
                
this.t = t;
            }

            
public bool MoveNext()
            {
                
if (position < t.elements.Length - 1)
                {
                    position
++;
                    
return true;
                }
                
else
                {
                    
return false;
                }
            }

            
public void Reset()
            {
                position 
= -1;
            }

            
object IEnumerator.Current
            {
                
get
                {
                    
try
                    {
                        
return t.elements[position];
                    }
                    
catch (IndexOutOfRangeException)
                    {
                        
throw new InvalidOperationException();
                    }
                }
            }
        }
        
#endregion
    }

2. 使用
    MySplit mySplit = new MySplit("大豆男生: I Love You!"new char[] { ' ''-' });
    
foreach (string item in mySplit)
    {
        Console.WriteLine(item);
    }

3. 输出结果
   大豆男生:
   I
   Love
   You!

相关文章:C# 中实现索引指示器

本文地址:http://www.cnblogs.com/anjou/archive/2007/07/05/807357.html

原文地址:https://www.cnblogs.com/anjou/p/807357.html