控制台应用程序C#中的数组列表

时间:2016-12-20 21:31:03

标签: c#

我正在研究一个学校项目,但我找不到最近2个小时的工作语法。

    static void Main(string[] args)
    {

        List<string[]> loggBook = new List<string[]>();
        string[] loggBookArray = new string[2];

        loggBookArray[0] = "1";
        loggBookArray[1] = "2";
        loggBook.Add(loggBookArray);
        loggBookArray[0] = "3";
        loggBookArray[1] = "4";
        loggBook.Add(loggBookArray);
        loggBookArray[0] = "5";
        loggBookArray[1] = "6";
        loggBook.Add(loggBookArray);

        foreach (string[] x in loggBook)
        {
            string s = string.Join("\n", x);
            Console.WriteLine(s);
        }
        Console.ReadLine();

    }

基本上,当我想要打印出1,2,3,4,5,6时,打印5,6,5,6,5,6。如果我使用多个字符串[],我可以让它工作,但我认为只用一个字符串[]就会看起来更干净。如何让它以我想要的方式保存?此外,当它们已保存在列表中时,有没有办法编辑已列入列表的那些?提前致谢。

3 个答案:

答案 0 :(得分:2)

您需要在添加数组后重新初始化数组,否则您将覆盖相同的元素,因为数组指向特定的内存地址。数组是对象而不是值类型

        List<string[]> loggBook = new List<string[]>();
        string[] loggBookArray;

        loggBookArray = new string[] { "1", "2" };
        loggBook.Add(loggBookArray);
        loggBookArray = new string[] { "3", "4" };
        loggBook.Add(loggBookArray);
        loggBookArray = new string[] { "5", "6" };
        loggBook.Add(loggBookArray);

        foreach (string[] x in loggBook)
        {
            string s = string.Join("\n", x);
            Console.WriteLine(s);
        }
        Console.ReadLine();

答案 1 :(得分:2)

您可以使用集合初始化来缩短代码。

static void Main(string[] args)
{
    var loggBook = new List<string[]>
    {
        new[] {"1", "2"},
        new[] {"3", "4"},
        new[] {"5", "6"}
    };

    foreach (var x in loggBook)
    {
        var s = string.Join("\n", x);
        Console.WriteLine(s);
    }
    Console.ReadLine();
}

要编辑和项目,您可以通过索引访问它,如下所示:

//Edit item (first element in the list, second in the array)
loggBook[0][1] = "0";

答案 2 :(得分:-2)

在添加到列表之前,您必须更新字符串[]。