petshop4中方法GetCachedParameters(string cacheKey)如何理解?
代码如下:
namespace PetShop.DBUtility
{
public abstract class SqlHelper
{
// Hashtable to store cached parameters
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
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++)
[color=#FF0000]clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
return clonedParms;
}
}
}[/color]
请问:
1.为什么要使用Clone方法返回SqlParameter[],作用是什么? (代码红色部分)
------解决方案--------------------
要为其中的各个 parameter 赋值的吧,
如果两个页面请求了这个参数数组,
同时赋值就麻烦了
------解决方案--------------------研究PETSHOP中我也出现了一大堆的问题.过来学习的~~
------解决方案--------------------
------解决方案--------------------直接返还就是引用
克隆返还的对象--操作内存
不同的调用者给不同的值
------解决方案--------------------
1.为什么要使用Clone方法返回SqlParameter[],作用是什么?
==========防止你调用后改变缓存中存在的参数