Hashlist.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Collections;
  5. namespace Core.Mes.Client.Common
  6. {
  7. [Serializable]
  8. public class Hashlist : IDictionary, IEnumerable, IDisposable
  9. {
  10. #region 成员变量
  11. protected ArrayList m_oKeys;// = new ArrayList();
  12. /// <summary>
  13. /// 数据存放Hash列表,主要是为了加快数据存放速度
  14. /// </summary>
  15. protected Hashtable m_oValues;// = new Hashtable();
  16. #endregion
  17. public Hashlist()
  18. {
  19. m_oKeys = new ArrayList();
  20. m_oValues = new Hashtable();
  21. }
  22. #region ICollection 接口派生函数
  23. /// <summary>
  24. /// 数据节点个数
  25. /// </summary>
  26. public int Count
  27. {
  28. get { return m_oValues.Count; }
  29. }
  30. /// <summary>
  31. ///
  32. /// </summary>
  33. public bool IsSynchronized
  34. {
  35. get { return m_oValues.IsSynchronized; }
  36. }
  37. /// <summary>
  38. ///
  39. /// </summary>
  40. public object SyncRoot
  41. {
  42. get { return m_oValues.SyncRoot; }
  43. }
  44. /// <summary>
  45. ///
  46. /// </summary>
  47. /// <param name="oArray"></param>
  48. /// <param name="iArrayIndex"></param>
  49. public void CopyTo(System.Array oArray, int iArrayIndex)
  50. {
  51. m_oValues.CopyTo(oArray, iArrayIndex);
  52. }
  53. #endregion
  54. #region IDictionary 接口函数
  55. /// <summary>
  56. ///
  57. /// </summary>
  58. /// <param name="oKey"></param>
  59. /// <param name="oValue"></param>
  60. public void Add(object oKey, object oValue)
  61. {
  62. m_oKeys.Add(oKey);
  63. m_oValues.Add(oKey, oValue);
  64. }
  65. /// <summary>
  66. ///
  67. /// </summary>
  68. public bool IsFixedSize
  69. {
  70. get { return m_oKeys.IsFixedSize; }
  71. }
  72. /// <summary>
  73. ///
  74. /// </summary>
  75. public bool IsReadOnly
  76. {
  77. get { return m_oKeys.IsReadOnly; }
  78. }
  79. /// <summary>
  80. ///
  81. /// </summary>
  82. public ICollection Keys
  83. {
  84. get { return m_oValues.Keys; }
  85. }
  86. /// <summary>
  87. ///
  88. /// </summary>
  89. public void Clear()
  90. {
  91. m_oValues.Clear();
  92. m_oKeys.Clear();
  93. }
  94. /// <summary>
  95. ///
  96. /// </summary>
  97. /// <param name="oKey"></param>
  98. /// <returns></returns>
  99. public bool Contains(object oKey)
  100. {
  101. return m_oValues.Contains(oKey);
  102. }
  103. /// <summary>
  104. ///
  105. /// </summary>
  106. /// <param name="oKey"></param>
  107. /// <returns></returns>
  108. public bool ContainsKey(object oKey)
  109. {
  110. return m_oValues.ContainsKey(oKey);
  111. }
  112. /// <summary>
  113. ///
  114. /// </summary>
  115. /// <returns></returns>
  116. public IDictionaryEnumerator GetEnumerator()
  117. {
  118. return m_oValues.GetEnumerator();
  119. }
  120. /// <summary>
  121. ///
  122. /// </summary>
  123. /// <param name="oKey"></param>
  124. public void Remove(object oKey)
  125. {
  126. m_oValues.Remove(oKey);
  127. m_oKeys.Remove(oKey);
  128. }
  129. /// <summary>
  130. ///
  131. /// </summary>
  132. public object this[object oKey]
  133. {
  134. get { return m_oValues[oKey]; }
  135. set { m_oValues[oKey] = value; }
  136. }
  137. /// <summary>
  138. ///
  139. /// </summary>
  140. public ICollection Values
  141. {
  142. get { return m_oValues.Values; }
  143. }
  144. #endregion
  145. #region IEnumerable 接口
  146. IEnumerator IEnumerable.GetEnumerator()
  147. {
  148. return m_oValues.GetEnumerator();
  149. }
  150. #endregion
  151. #region Hashlist 实现的查询对象
  152. /// <summary>
  153. ///
  154. /// </summary>
  155. public object this[string Key]
  156. {
  157. get { return m_oValues[Key]; }
  158. }
  159. /// <summary>
  160. ///
  161. /// </summary>
  162. public object this[int Index]
  163. {
  164. get { return m_oValues[m_oKeys[Index]]; }
  165. }
  166. #endregion
  167. #region IDisposable 数据销毁接口
  168. public void Dispose()
  169. {
  170. m_oKeys.Clear();
  171. }
  172. #endregion
  173. }
  174. }