C# 结构体嵌套问题!!!
结构体嵌套问题!
在类class SysStruct中创建结构体:
public struct Amsg
{
public string AName;
public struct B
{
public string BName;
}
public B[] bmsg;
}
在全局变量Global类中创建全局变量集合:
static public List<SysStruct.Amsg> GList = new List<SysStruct.Amsg> ();
在保存数据窗口FORM中做如下操作
//声明一个临时变量的集合
private List<SysStruct.Amsg> tempList = new List<SysStruct.Amsg> ();
//将全局变量赋值到本窗体变量中
PublicMethod.ListCopy(Global.GList, tempList );
//修改参数
private void btnSave_Click(object sender, EventArgs e)
{
//声明结构体
SysStruct.Amsg rmsg = new SysStruct.Amsg();
//修改结构体集合,先将集合中待修改的项赋值到一个新的结构体,在将此项删除
foreach (SysStruct.Amsg v in tempList)
{
if (v.AName == name)
{
rmsg = v;
tempList.Remove(v);
break;
}
}
//添加新项
for (int i = 0; i < 8; i++)
{
rmsg.bmsg[i].BName = tbxname[i].Text.Trim();
//问题出在此处,rmsg.bmsg[i]值发生变化后,Global.GList的值也变化了!!!
}
tempList.Add(rmsg);
//将临时变量赋值到全局变量中
PublicMethod.ListCopy(tempList, Global.GList);
}