在ASP.net(C#)中对DropDownList使用相同的ListItem对象时,它将显示最后一项“文本和值”。该代码写在下面,
protected void Button1_Click(object sender, EventArgs e)
{
ListItem itm = new ListItem();
itm.Text = "AAA";
itm.Value = "AAA";
DropDownList1.Items.Add(itm);
itm.Text = "BBB";
itm.Value = "BBB";
DropDownList1.Items.Add(itm);
itm.Text = "CCC";
itm.Value = "CCC";
DropDownList1.Items.Add(itm);
itm.Text = "DDD";
itm.Value = "DDD";
DropDownList1.Items.Add(itm);
}
DropDownList显示4个项目,但所有项目的文本均为“ DDD”。但是如果我加上
itm = new listItem();
在分配新的文本和值之前,它会根据需要显示。AAA,BBB,CCC,DDD。
是什么原因?
ListItem是一个对象,内存中只有一个实例。变量itm仅将对象的地址保存在内存中。当您将列表项添加到下拉列表中时,该下拉列表会在内部将地址复制到变量中。因此,您要将同一对象添加4次到下拉列表中。稍后呈现下拉列表并检查“文本”和“值”属性时,将使用您在上述代码中设置的最后一个值“ DDD”来设置它们。
使用New将在内存中实例化一个新对象,并且变量中的地址将指向该新对象。
查找有关引用与值类型的主题,这应该有助于您了解发生了什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句