关于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];
}
------解决方案--------------------直接返回的是引用,
克隆返回的是对象
------解决方案--------------------克隆是在内存中直接操作的。