C# 结构体成员 list
我定义一个结构体,里面包含List类型,而结构体调用时也要成为一个List。然而我修改结构体成员里面的List时,另一个变了。如下,程序运行到cc.sItemName="...
我定义一个结构体,里面包含List类型,而结构体调用时也要成为一个List。然而我修改结构体成员里面的List时,另一个变了。如下,程序运行到cc.sItemName = "cc";都没问题(sItemName是string),但是运行下一步cc.dParameter[1] = 4000;后(dParameter是List),连前面的bb的dParameter的值也一起变了,求原因及解决方法。
//定义结构体
public struct struct_TestItem
{
public string sItemName { get; set; }
public List<string> sParameter;
public List<double> dParameter { get; set; }
public sbyte bResult { get; set; }
}
//调用
private void Test()
{
List<struct_TestItem> lst_Strust_TestItem = new List<struct_TestItem>();
struct_TestItem aa = new struct_TestItem();
struct_TestItem bb = new struct_TestItem();
List<string> sa1 = new List<string>();
List <double> sd1 =new List <double>();
sa1.Add("1");
sa1.Add("2");
sd1.Add(3);
sd1.Add(4);
aa.sItemName = "aa";
aa.sParameter = sa1;
aa.dParameter = sd1;
lst_Strust_TestItem.Add(aa);
bb.sItemName = "bb";
bb.sParameter = sa2;
bb.dParameter = sd2;
lst_Strust_TestItem.Add(bb);
struct_TestItem cc = new struct_TestItem();
cc = bb;
cc.sItemName = "cc";
cc.dParameter[1] = 4000;
lst_Strust_TestItem.Add(cc);
}
别跟我说类,试过了,一个样,实例化了也一样。 展开
//定义结构体
public struct struct_TestItem
{
public string sItemName { get; set; }
public List<string> sParameter;
public List<double> dParameter { get; set; }
public sbyte bResult { get; set; }
}
//调用
private void Test()
{
List<struct_TestItem> lst_Strust_TestItem = new List<struct_TestItem>();
struct_TestItem aa = new struct_TestItem();
struct_TestItem bb = new struct_TestItem();
List<string> sa1 = new List<string>();
List <double> sd1 =new List <double>();
sa1.Add("1");
sa1.Add("2");
sd1.Add(3);
sd1.Add(4);
aa.sItemName = "aa";
aa.sParameter = sa1;
aa.dParameter = sd1;
lst_Strust_TestItem.Add(aa);
bb.sItemName = "bb";
bb.sParameter = sa2;
bb.dParameter = sd2;
lst_Strust_TestItem.Add(bb);
struct_TestItem cc = new struct_TestItem();
cc = bb;
cc.sItemName = "cc";
cc.dParameter[1] = 4000;
lst_Strust_TestItem.Add(cc);
}
别跟我说类,试过了,一个样,实例化了也一样。 展开
1个回答
2017-08-19
展开全部
因为 cc=bb这一句,cc 和 bb 虽然都是结构体,但这个结构体里面有 List,List并没有重新实例化,所以 cc 和 bb 里面的 List 其实是同一个。
追问
如何解决?
追答
在构造 struct_TestItem 的时候实例化里面的两个 List。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询