将你的代码改为:
private ArrayList myArray=new ArrayList();
private Hashtable myHash=new Hashtable();
protected System.Web.UI.WebControls.Label Label2;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
this.myArray.Clear();
this.myArray.Add("BeiJing");
this.myArray.Add("TianJing");
this.myArray.Add("ShangHai");
this.myHash.Add("1",this.myArray); this.myArray = new ArrayList(); //重新分配一个对象给myArray这个变量
this.myArray.Add("american");
this.myArray.Add("iraq");
this.myArray.Add("china");
this.myArray.Add("Russin");
this.myArray.Add("England");
this.myHash.Add("2",this.myArray); this.Label2.Text=((ArrayList)(this.myHash["1"])).Count.ToString();
}
记住:.Net中的任何对象都是基于引用的,也就是说在你原来的代码中,往Hashtable中两次加的是同一个对象,当然是一样的值,第一次的值已经被你调用Clear方法清除掉了,当然永远都是第二次添加的值