数组列表总是添加与第一个插入数组相同值的数组?

时间:2014-04-05 20:50:37

标签: c# arrays

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;

任何人都知道答案为什么会发生这种情况?

1 个答案:

答案 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>