如何怎么修改ArrayList中struct结构体变量的值呢?

时间:2022-10-24 10:32:04
如何修改结构为struct的ArrayList中,struct结构体中的string项
如果ArrayList中的结构是struct,并且struct中的项为string,如何修改string呢?

定义了如下的结构体,和一个全局的ArrayList,ArrayList中的元素为一个结果体。
赋值以后想修改struct中string2为晚安,可是操作时改了,但是输出的时候为什么还是原来最初的赋值呢??
struct struc测试
{
public string String1; //被依存单词词号
public string String2;  //被依存单词串
}
public ArrayList al测试=new ArrayList();

private void button1_Click(object sender, System.EventArgs e)
{
string s原赋值="";
string s修改值="";
for(int i=0;i<2;i++)
{
struc测试 stTest;
stTest.String1="早安";
stTest.String2="午安";
s原赋值="#"+s原赋值+stTest.String1+"--"+stTest.String2+"  ";
this.al测试.Add(stTest);
}

for(int j=0;j<2;j++)
{
struc测试 stTest=(struc测试)this.al测试[j];
stTest.String1="晚安";
}
for(int x=0;x<2;x++)
{
s修改值="#"+s修改值+((struc测试)this.al测试[x]).String1+"=="+((struc测试)this.al测试[x]).String2+"  ";
}
this.label1.Text=s原赋值;
this.label2.Text=s修改值;
}

输出的结构为:
##早安--午安  早安--午安
##早安==午安  早安==午安

希望输出的结构为
##早安--午安  早安--午安
##早安==晚安  早安==晚安

程序那里错了呢??
谢谢!

5 个解决方案

#1


存ArrayList的时候是作为object存进去的......不是作为struc测试

#2


如果取出原来的struc测试,再remove了那个元素,下一步操作在insert到相应位置,数组的顺序应该不会变,remove应该是吧最后一条记录代替所删除记录,然后删除要删的记录,insert是先在数组最后添加要添加的记录,然后跟相应位置的记录互换。

#3


struct 是值类型
所以
struc测试 stTest=(struc测试)this.al测试[j];//这里stTest 并不是al测试[j],他们只是值相等;
//stTest.String1="晚安"; 所以这里并不是修改al测试[j].String1 而是修改stTest这个临时变量的String1
有一个解决方案就是把struct改为class

#4


修改完后,先删除原先的,再插入现在的,例如:
yourStruct objData = ( yourStruct ) yourArray[i];
// Set new value to your struct object;

// Save new object into arraylist
yourArray.RemoveAt( i );
yourArray.Insert( i, objData );

#5


谢谢hdt 和Knight94
我都试这些方法了呢^_^
谢谢

#1


存ArrayList的时候是作为object存进去的......不是作为struc测试

#2


如果取出原来的struc测试,再remove了那个元素,下一步操作在insert到相应位置,数组的顺序应该不会变,remove应该是吧最后一条记录代替所删除记录,然后删除要删的记录,insert是先在数组最后添加要添加的记录,然后跟相应位置的记录互换。

#3


struct 是值类型
所以
struc测试 stTest=(struc测试)this.al测试[j];//这里stTest 并不是al测试[j],他们只是值相等;
//stTest.String1="晚安"; 所以这里并不是修改al测试[j].String1 而是修改stTest这个临时变量的String1
有一个解决方案就是把struct改为class

#4


修改完后,先删除原先的,再插入现在的,例如:
yourStruct objData = ( yourStruct ) yourArray[i];
// Set new value to your struct object;

// Save new object into arraylist
yourArray.RemoveAt( i );
yourArray.Insert( i, objData );

#5


谢谢hdt 和Knight94
我都试这些方法了呢^_^
谢谢