下面是SQLHELPER的东西:private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());//这里为什么要定义HAHSTABLE ARRAYLIST 不行吗public static SqlParameter[] GetCachedParameters(string cacheKey) {
SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey
if (cachedParms == null)
return null;SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];for (int i = 0, j = cachedParms.Length; i < j; i++)
clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
                      //这里ICloneable是什么意思 有什么作用呢?我一直没明白为什么要转化成ICloneable接口,还有这与深拷贝和浅拷贝由什么关系吗 
return clonedParms;
}

解决方案 »

  1.   

    1.Hashtable 执行小型的集合时有很大的性能优势。
    2.SqlParameter没有提供Clone()方法
      

  2.   

    //这里ICloneable是什么意思 有什么作用呢?我一直没明白为什么要转化成ICloneable接口,还有这与深拷贝和浅拷贝由什么关系吗 实现了ICloneable接口,自己完成拷贝的工作,也就是深拷贝
    调用对象的Clone()方法完成的是默认的浅拷贝
      

  3.   

    那这里为什么不用浅拷贝 而要用ICloneable的深拷贝?
      

  4.   

    //那这里为什么不用浅拷贝 而要用ICloneable的深拷贝?浅拷贝是计算机所理解的复制,未必和我们的想法完全一致,尤其是在拷贝的对象中有其他对象的引用的时候用深拷贝会更合理一些