我正在研究一个学校项目,但我找不到最近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。如果我使用多个字符串[],我可以让它工作,但我认为只用一个字符串[]就会看起来更干净。如何让它以我想要的方式保存?此外,当它们已保存在列表中时,有没有办法编辑已列入列表的那些?提前致谢。
答案 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)
在添加到列表之前,您必须更新字符串[]。