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);
}
*/
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);
}
*/
浙公网安备 33010602011771号