数组列表始终添加与第一个插入的数组具有相同值的数组

本文关键字:数组 第一个 列表 添加 插入 | 更新日期: 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> .