测试hashtable是否有类似引用类型的传值特性
public void Test()
{
Hashtable ht = new Hashtable();
pare user = new pare();
user.name = "pdy";
user.age = 12;
ht.Add("pdy", user);
var abc = (pare)ht["pdy"];
abc.name = "ls";
Console.WriteLine(((pare)ht["pdy"]).name);
changehs( ht);
Console.WriteLine(((pare)ht["pdy"]).age);
Console.WriteLine(((pare)ht["sc"]).name);
}
public void changehs( Hashtable ht)
{
var abc = (pare)ht["pdy"];
abc.age = 33;
pare user = new pare();
user.name = "sc";
user.age = 18;
ht.Add("sc", user);
}
private class pare
{
public String name { get; set; }
public int age { get; set; }
}
输出结果
结论
当Hashtable的对象是引用对象时,在其它方法内,或直接操作获取到的变量都可以直接更改hashtable中的值。注意,如果是基本的值类型,是不能更改其值的。但在方法内增加kv是可以的。