• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wayde


博客园    首页    新随笔    联系   管理    订阅  订阅
记录学习-NonUniqueHashtable
using System;
using System.Collections;

public
 class NonUniqueHashtable : IEnumerable 
{
    
private ArrayList alContainer = null;

    
/// <summary>
    
///
    
/// </summary>
    
/// <param name="index"></param>
    
/// <returns></returns>
    public DictionaryEntry this [int index]
    {
        
get    { return (DictionaryEntry)alContainer[index]; }
        
set    { alContainer[index] = value; }
    }

    
/// <summary>
    
/// Constructor
    
/// </summary>
    public NonUniqueHashtable() 
    {
        alContainer 
= new ArrayList();
    }

    
/// <summary>
    
/// Add an object with a key.
    
/// </summary>
    
/// <param name="Key">Key to be used for identifying object</param>
    
/// <param name="Value">the object to be stored</param>
    public void Add(object Key, object Value)
    {
        DictionaryEntry entry 
= new DictionaryEntry(Key, Value);
        alContainer.Add(entry);
    }

    
public NonUniqueKeyEnumerator GetEnumerator() 
    {
        
return new NonUniqueKeyEnumerator(this);
    }

    
#region "Inner Class"
   

    /// <summary>
    
///
    
/// </summary>
    public class NonUniqueKeyEnumerator: IEnumerator 
    {

        
private int i; //index;
        private NonUniqueHashtable nuHashtable;

        
/// <summary>
        
/// Constructor
        
/// </summary>
        
/// <param name="nonUniqueHashtable"></param>
        public NonUniqueKeyEnumerator(NonUniqueHashtable nonUniqueHashtable) 
        {
            nuHashtable 
= nonUniqueHashtable;
            i 
= -1;
        }

        
/// <summary>
        
/// Reset index
        
/// </summary>
        public void Reset() 
        {
            i 
= -1;
        }

        
/// <summary>
        
/// Move index to the next object.
        
/// </summary>
        
/// <returns></returns>
        public bool MoveNext() 
        {
            i
++;
            
return(i < nuHashtable.alContainer.Count);
        }

        
/// <summary>
        
/// Returns current index
        
/// </summary>
        public int Current 
        {
            
get { return(i); }
        }

        
/// <summary>
        
/// Returns current object
        
/// </summary>
        object IEnumerator.Current 
        {
            
get { return(Current); }
        }


    }
    
    
#endregion
        
    IEnumerator IEnumerable.GetEnumerator() 
    {
        
return GetEnumerator();
    }

}

/*

            NonUniqueHashtable result = new NonUniqueHashtable();
            result.Add("t1", "111");
            result.Add("t1", "222");
            result.Add("t2", "333");
            foreach (int i in result)
            {
                Console.WriteLine("KEY:{0}", result[i].Key);
                Console.WriteLine("VALUE:{0}", result[i].Value);
            }



*/
posted on 2007-10-18 18:27  wayde  阅读(171)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3