W
wg
I am attempting to update a value in an arraylist. However when I updated
one element, all elements get updated to the same value. Does anyone know
how to achieve this?
Here is an example,
private ArrayList TagList = new ArrayList();
private void button1_Click(object sender, System.EventArgs e)
{
TagHolder Tag = new TagHolder();
Tag.Tag1 = 1;
Tag.Tag2 = "Wade";
TagList.Add(Tag);
Console.WriteLine( ((TagHolder)TagList[0]).Tag1);
Console.Write(((TagHolder)TagList[0]).Tag2.ToString());
Tag.Tag1 = 2;
Tag.Tag2 = "Thomas";
TagList.Add(Tag);
Console.WriteLine( ((TagHolder)TagList[1]).Tag1);
Console.Write(((TagHolder)TagList[1]).Tag2.ToString());
Console.Write("---------------------");
}
private void button2_Click(object sender, System.EventArgs e)
{
((TagHolder)TagList[0]).Tag1 = (int) 5;
((TagHolder)TagList[0]).Tag2 = "Stacy";
//Expect to only change element 0, but in reality changes 0 and 1.
Console.WriteLine( ((TagHolder)TagList[0]).Tag1);
Console.Write(((TagHolder)TagList[0]).Tag2.ToString());
Console.WriteLine( ((TagHolder)TagList[1]).Tag1);
Console.Write(((TagHolder)TagList[1]).Tag2.ToString());
}
public class TagHolder
{
private int tag1;
private string tag2;
public int Tag1
{
get
{
return tag1;
}
set
{
tag1 = value;
}
}
public string Tag2
{
get
{
return tag2;
}
set
{
tag2 = value;
}
}
}
Thanks
wg
one element, all elements get updated to the same value. Does anyone know
how to achieve this?
Here is an example,
private ArrayList TagList = new ArrayList();
private void button1_Click(object sender, System.EventArgs e)
{
TagHolder Tag = new TagHolder();
Tag.Tag1 = 1;
Tag.Tag2 = "Wade";
TagList.Add(Tag);
Console.WriteLine( ((TagHolder)TagList[0]).Tag1);
Console.Write(((TagHolder)TagList[0]).Tag2.ToString());
Tag.Tag1 = 2;
Tag.Tag2 = "Thomas";
TagList.Add(Tag);
Console.WriteLine( ((TagHolder)TagList[1]).Tag1);
Console.Write(((TagHolder)TagList[1]).Tag2.ToString());
Console.Write("---------------------");
}
private void button2_Click(object sender, System.EventArgs e)
{
((TagHolder)TagList[0]).Tag1 = (int) 5;
((TagHolder)TagList[0]).Tag2 = "Stacy";
//Expect to only change element 0, but in reality changes 0 and 1.
Console.WriteLine( ((TagHolder)TagList[0]).Tag1);
Console.Write(((TagHolder)TagList[0]).Tag2.ToString());
Console.WriteLine( ((TagHolder)TagList[1]).Tag1);
Console.Write(((TagHolder)TagList[1]).Tag2.ToString());
}
public class TagHolder
{
private int tag1;
private string tag2;
public int Tag1
{
get
{
return tag1;
}
set
{
tag1 = value;
}
}
public string Tag2
{
get
{
return tag2;
}
set
{
tag2 = value;
}
}
}
Thanks
wg