我现在遇到这样一个问题:
hashtable a =new hashtable();
hashtable b =new hashtable();
.
.
.
//经过这段,a已经存有了值
b=a;string s1 = "111";
string s2 = "222";if(b.ContainsKey(s1))
{
b[s1] = "222"; //这样的赋值,hashtable a中的也会被改变吧?因为指针的缘故。
}如果把b=a,改成b=a.clone(),这样就要新开一片内存,由于a,b中相同的值是大多数,程序中就会开出大片内存保存重复内容,我觉得不值得。如果写成:
hashtable a =new hashtable();
hashtable b =new hashtable();
.
. //给a赋值
.
string s1 = "111";
string s2 = "222";
.
. //给b赋值
.
//经过这段,a,b都已经存有了值下面用循环将a中有的,b中没有值添加到b中,这要用循环foreach(DictionaryEntry de in a)
{
if (!b.ContainsKey(de.Key))
{
b.Add(de.Key,de.Value);
}
}用循环的话,耗时太多所以我想寻找一种,先把a赋给b,然后能够单独给b[key]赋值的方法。
hashtable a =new hashtable();
hashtable b =new hashtable();
.
.
.
//经过这段,a已经存有了值
b=a;string s1 = "111";
string s2 = "222";if(b.ContainsKey(s1))
{
b[s1] = "222"; //这样的赋值,hashtable a中的也会被改变吧?因为指针的缘故。
}如果把b=a,改成b=a.clone(),这样就要新开一片内存,由于a,b中相同的值是大多数,程序中就会开出大片内存保存重复内容,我觉得不值得。如果写成:
hashtable a =new hashtable();
hashtable b =new hashtable();
.
. //给a赋值
.
string s1 = "111";
string s2 = "222";
.
. //给b赋值
.
//经过这段,a,b都已经存有了值下面用循环将a中有的,b中没有值添加到b中,这要用循环foreach(DictionaryEntry de in a)
{
if (!b.ContainsKey(de.Key))
{
b.Add(de.Key,de.Value);
}
}用循环的话,耗时太多所以我想寻找一种,先把a赋给b,然后能够单独给b[key]赋值的方法。
解决方案 »
- 如何在原有数据集中添加的DataTable?
- 想请教一个Excel和Sql的问题
- 用OleDbDataApater.Fill方法会丢失OleDbConnection.ConnectionString中的密码!?!
- 如何屏蔽系统弹出的对话框
- slqhelper
- C# 串口编程
- 字符串的问题~!
- 在活动目录和 Exchange 2000 Server集成时......., 师兄们请进!!
- 一个有关c#的内存使用增加的问题!实在是搞不定了,请大家给我一点提示吧!谢谢啊!(在线等待,见者给份儿)
- vs2013 单元测试 如何查看代码覆盖率
- asp页面不知道原因持续等待
- stringbuilder类型数据的存储
Hashtable b =new Hashtable( a ); //<----use Hashtable( IDictionary ) constructor to copy
你的第一种是把a给变了.就用b=a.clone(),不新开还能咋样,一个变另一个不变本来就是两个不同的变量
你的第二种还不是两个块内存,又多了个循环..
应该是Hashtable b =new Hashtable( a );
那就用Hashtable b =new Hashtable( a )
如果a和b存储的不是相同的数据,而只有一部分相同
你可以先将相同的部分存入a,然后用Hashtable b =new Hashtable( a )
然后再去将a,b中不同的数据分别存入a,b