首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# hashtable有关问题

2011-12-27 
c# hashtable问题C#要用一个hashtable方便查找和更改数据,在更改的时候出了问题。DateTime aa new DateTi

c# hashtable问题
C#要用一个hashtable方便查找和更改数据,在更改的时候出了问题。

DateTime aa = new DateTime();
aa = DateTime.Today.AddMonths(-1);
System.Collections.Hashtable table = new System.Collections.Hashtable(53,0.5f);
table.Add("a", aa);
table["a"] = DateTime.Today.AddMonths(1);
MessageBox.Show("aa=" + aa.ToShortDateString());
MessageBox.Show(((DateTime)table["a"]).ToShortDateString());


我希望更改aa的数据,但是没改成。可能是hashtable的value不应该放aa,
而是放aa的引用或者指向aa的指针,有这样的东西么,能放在hash中么


[解决办法]
自己定义属性和事件,属性变更,出发事件,aa也跟着变.
[解决办法]
不能,所有的容器类型都是值传递,不是引用传递。
[解决办法]

探讨
是不是说我把aa放到一个类中就行了呢 或者装箱行不行呢
偶去试试

[解决办法]
我们分析一下就知道了:
DateTime aa = new DateTime();
aa = DateTime.Today.AddMonths(-1);
System.Collections.Hashtable table = new System.Collections.Hashtable(53,0.5f);
table.Add("a", aa);

这里 aa和table["a"]指向相同的地址

table["a"] = DateTime.Today.AddMonths(1);
这里做了一个动作AddMonths(1)操作,注意,这里是返回了一个新地址
那么这里就把table["a"]指向了这个新地址
现在aa和table["a"]就指向了不同的地址

所以二个值就不一样了.

热点排行