数组列表始终添加与第一个插入的数组具有相同值的数组
本文关键字:数组 第一个 列表 添加 插入 | 更新日期: 2023-09-27 17:56:46
public List<string[]> arrList = new List<string[]>();
public string[] ArrayOfstring = new string[9];
public void ubaciStavku(string Rb, string Tip, string Servis, string Izlaz,
string Status, string Komentar, string DeoSeBr, string RegBr, string flag)
{
StavkaTrebova StavkaTrebova = StavkaTrebova.instanciraj(); /* Singleton Pattern */
StavkaTrebova.prosledi(Rb, Tip, Servis, Izlaz, Status, Komentar, DeoSeBr, RegBr);
ArrayOfstring[0] = flag;
ArrayOfstring[1] = Rb;
ArrayOfstring[2] = Tip;
ArrayOfstring[3] = Servis;
ArrayOfstring[4] = Izlaz;
ArrayOfstring[5] = Status;
ArrayOfstring[6] = Komentar;
ArrayOfstring[7] = DeoSeBr;
ArrayOfstring[8] = RegBr;
arrList.Add(ArrayOfstring); // hire all values in arrays are the same
}
我正在调试这个,一旦值传递给 ArrayOfstring,所有值都设置为插入之前的值
im 编码此值 ASP.NET 值从文本框传递到将值传递给方法"ubaciStavku"
的方法有人知道为什么会这样吗?
因为数组是引用类型,并且您每次都在修改相同的数组。相反,您应该创建一个新数组,然后将其添加到列表中。您只需将声明移动到方法中即可:
string[] ArrayOfstring = new string[9];
ArrayOfstring[0] = flag;
ArrayOfstring[1] = Rb;
...
arrList.Add(ArrayOfstring);
或者您可以使用速记:
arrList.Add(new [] { flag, Rb, Tip, Servis, Izlaz,
Status, Komentar, DeoSebr, RegBr });
此外,您可能希望使用自定义类型而不是字符串数组,然后有一个List<YourCustomType>
.