日期:2014-05-18  浏览次数:20443 次

关于PetShop4.0 中 SQLHelper.cs 的问题
SQLHelper.cs中提供的取出cache中的参数的方式如下:
///   <summary>
///   Retrieve   cached   parameters
///   </summary>
///   <param   name= "cacheKey "> key   used   to   lookup   parameters </param>
///   <returns> Cached   SqlParamters   array </returns>
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();

        return   clonedParms;
}

是把参数克隆了一遍返回的。这和直接返回参数(下面的写法)有什么区别呢?

public   static   SqlParameter[]   GetCachedParameters(string   cacheKey){
        return   (SqlParameter[])parmCache[cacheKey];  
}

------解决方案--------------------
直接返回的是引用,

克隆返回的是对象
------解决方案--------------------
克隆是在内存中直接操作的。