DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(String));
dt.Rows.Add(new Object[] { "A" });
ds.Tables.Add(dt);
Cache["Test"] = ds;
DataSet ds1 = (DataSet)Cache["Test"];
ds1.Tables[0].Rows.Add(new Object[] { "B" }); DataSet ds2 = (DataSet)Cache["Test"];以上是,我先生成一个Dataset再保存到cache中
然后新生成一个ds1为cache的内容
我更改了这个新ds1为什么cache的内容也跟着更改呢最后的ds2和ds1一样,而不是和ds一样这是为什么呢..怎么办cache才不会被更改谢谢
但我不理解的是为什么Cache会跟着变谢谢
if (dst == null)
{
Cache.Insert("CachedDataSet", dst, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);
}
else
{
}
这样做只是复制了一个Cache["Test"]的引用给ds1,
Cache["Test"]和ds1都是指向托管堆的同一个数据
所以用任意一个进行修改都会改变托管堆的内容
ds1.Tables[0].Rows.Add(new Object[] { "B" });这样就行了