我已经陷入疑问,我不知道如何解决它,案例是:
我创建了一个“阵列字符串”列表,如下所示:
List<string[]> definitions;
我已经添加了这样的值:
definitions.Add(new string[2] { "A", "Def.1" });
definitions.Add(new string[2] { "B", "Def.2" });
为了显示值,我这样做:
foreach (string[] theDefinition in definitions)
{
Console.WriteLine(theDefinition[0] + "\tdef: " + theDefinition[1]);
}
到目前为止,这种方法效果很好,但是如何在没有foreach的情况下显示值,我的意思是:
Console.WriteLine(definitions[0] ...)
我应该在3个点中写下什么来显示索引0中列表中的“A”或“Def.1”。
我想通过做类似的事情克服这个问题:
string[] temp = definitions[0]
Console.WriteLine(temp[0] + ", " + temp[1]);
如何使用Console.WriteLine实现它而不使用额外的变量,这可能吗?如何?提前谢谢。
答案 0 :(得分:4)
Console.WriteLine(definitions[0][0] + "\tdef: " + definitions[0][1]);
答案 1 :(得分:2)
更好的方法是声明定义类型
public class Definition
{
public string Name { get; set; }
public string Value { get; set; }
public override string ToString()
{
return Name + "\tdef: " + Value;
}
}
现在您可以像这样简化代码
List<Definition> definitions = new List<Definition> {
new Definition { Name = "A", Value = "Def.1" },
new Definition { Name = "B", Value = "Def.2" },
};
foreach (Definition theDefinition in definitions)
{
Console.WriteLine(theDefinition);
}
原因你可以使用Nikhil Agrawal提出的流利版本,现在更简单了。
definitions.ForEach(def => Console.WriteLine(def));
打印
A def: Def.1 B def: Def.2
访问字段比使用数组索引更具描述性
Definition def = definitions[0];
Console.WriteLine(def.Name + ", " + def.Value);
// compared to
// Console.WriteLine(temp[0] + ", " + temp[1]);
答案 2 :(得分:2)
其他答案当然是正确的,但为什么不使用Dictionary而不是2维字符串数组的List。
var definitions = new Dictionary<string, string>
{
{ "A", "Def.1" },
{ "B", "Def.2" }
};
foreach (var keypair in definitions)
{
Console.WriteLine("{0} \tdef: {1} ", keypair.Key, keypair.Value);
}
答案 3 :(得分:1)
您可以这样访问:definitions[definition_index][string_index]
。
尝试:
Console.WriteLine(definitions[0][0] + "\tdef: " + definitions[0][1]);
答案 4 :(得分:1)
一行代替3行。当LINQ在这里时,不使用For或foreach Loop或Extra Variable
definitions.ForEach(x => Console.WriteLine(x[0] + "\tdef: " + x[1]));
答案 5 :(得分:1)
for (var i = 0; i < definitions.Length; i++)
{
Console.WriteLine(definitions[i][0] + "\tdef: " + definitions[i][1]);
}