public static SqlParameter[] GetCachedParameters(string cacheKey) 
{
SqlParameter[] cachedParms = (SqlParameter[])SQLHelper.paramCache[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();
} return clonedParms;
}问:为什么已经有了cachedParms还要在Clone();出来一个clonedParms;在return呢

解决方案 »

  1.   

    这东西就是拿空间换时间,可能由于SqlHelper类和parmCache都是静态的缘故吧,所以他要克隆出来一份.
    纯属猜测.
      

  2.   

    这个估计是因为(SqlParameter[])SQLHelper.paramCache[cacheKey]为了保证不会变化,所以当需要用到这个时,每次取出都重新Clone,以保证所有的操作不会影响到原来的
      

  3.   

    多人操作这个类的时候,Clone比较安全