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,所有值都会在插入之前设置为值
我在ASP.NET中对此进行编码将值从文本框传递到将值传递给方法&#34; ubaciStavku&#34;
任何人都知道答案为什么会发生这种情况?
答案 0 :(得分:3)
因为数组是引用类型,并且您每次都在修改相同的数组。相反,您应该创建一个新数组,然后将其添加到列表中。您只需在方法中移动声明即可:
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>
。