測試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是可以的。