hashtable 嵌套hashtable 赋值

xyl2960 2013-12-17 09:22:43
static void Main(string[] args)
{
Hashtable htname = new Hashtable();
Hashtable _date = new Hashtable();
for (int i = 0; i < 5; i++)
{
_date.Add(i.ToString(),"0");
}
htname.Add("一号锅炉",_date);
htname.Add("二号锅炉",_date);

for (int i = 0; i < 5; i++)
{
string name = "一号锅炉";
string ele = (2 + 2).ToString();
Hashtable date = new Hashtable();
date = htname[name] as Hashtable;
date[2.ToString()] = ele;
htname[name] = date;

}
foreach (DictionaryEntry item in htname["一号锅炉"] as Hashtable)
{
Console.WriteLine(item.Key.ToString() + "," + item.Value.ToString());
}
foreach (DictionaryEntry item in htname["二号锅炉"] as Hashtable)
{
Console.WriteLine(item.Key.ToString() + "," + item.Value.ToString());
}
Console.Read();
}



说明,我问htname["一号锅炉"]的value 赋值,但程序全部都赋值了, 但当htname 的value为string类型时没问题
...全文
151 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyl2960 2013-12-17
  • 打赏
  • 举报
回复
谢谢,高手,问题解决了,又学到了新东西
  • 打赏
  • 举报
回复
引用 楼主 xyl2960 的回复:
static void Main(string[] args)
        {
            Hashtable htname = new Hashtable();
            Hashtable _date = new Hashtable();
            for (int i = 0; i < 5; i++)
            {
                _date.Add(i.ToString(),"0");
            }
            htname.Add("一号锅炉",_date);
            htname.Add("二号锅炉",_date);

            for (int i = 0; i < 5; i++)
            {
                string name = "一号锅炉";
                string ele = (2 + 2).ToString();
                Hashtable date = new Hashtable();
                date = htname[name] as Hashtable;
                date[2.ToString()] = ele;
                htname[name] = date;

            }
            foreach (DictionaryEntry item in htname["一号锅炉"] as Hashtable)
            {
                Console.WriteLine(item.Key.ToString() + "," + item.Value.ToString());
            }
            foreach (DictionaryEntry item in htname["二号锅炉"] as Hashtable)
            {
                Console.WriteLine(item.Key.ToString() + "," + item.Value.ToString());
            }
            Console.Read();
        }
说明,我问htname["一号锅炉"]的value 赋值,但程序全部都赋值了, 但当htname 的value为string类型时没问题
解决办法就是 每次 htname.Add()的时候都要初始化一个hashtable
  • 打赏
  • 举报
回复
因为你的_date是个类 ,应该说是引用类型的,实质上你改变"一号锅炉"里面的hashtable(_date)实质上只要用到这个hashtable(_date)的地方都会改变

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧