你的猜测几乎是正确的。你想使用什么是nestedList[0][0]
:
List<List<string>> nestedList = new List<List<string>>();
nestedList.Add(new List<string> { "test1" });
nestedList.Add(new List<string> { "test2" });
nestedList.Add(new List<string> { "test3" });
if (nestedList[0][0] == "test1")
{
Console.WriteLine("Test 1!");
}
如果它可以帮助你理解语法,这里是一个等价的代码:
List<List<string>> nestedList = new List<List<string>>();
nestedList.Add(new List<string> { "test1" });
nestedList.Add(new List<string> { "test2" });
nestedList.Add(new List<string> { "test3" });
List<string> firstList = nestedList[0]; // Here's your new List<string> { "test1" }
if (firstList[0] == "test1")
{
Console.WriteLine("Test 1!");
}
然而,你要访问子的时候要小心像这样的列表,如果你不完全确定所有的列表已经填充。例如,下面的例子将迎接您的ArgumentOutOfRangeException
其原因在于List<string>
内没有物品通过nestedList[0]
返回:
List<List<string>> nestedList = new List<List<string>>();
nestedList.Add(new List<string>());
nestedList.Add(new List<string>());
nestedList.Add(new List<string>());
if (nestedList[0][0] == "test1") // Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index
{
Console.WriteLine("Test 1!");
}
您可以确保,例如,首先检查父列表项数:
if (nestedList[0].Count> 0 && nestedList[0][0] == "test1")
{
Console.WriteLine("Test 1!");
}
如果您要访问的实现IEnumerable<T>
接口什么的第一个元素的安全方式(基本上在框架每集合类),你可以使用LINQ(添加using System.Linq;
)FirstOrDefault
方法:
if (nestedList[0].FirstOrDefault() == "test1")
{
Console.WriteLine("Test 1!");
}
当枚举的元素是class
ES,则该方法返回任一可枚举或null
的第一个元素。
这里有个提示:'列表 firstNestedList = nestedList [0];' - 你如何访问列表的第一项? –
cubrr
你不应该像'nestedList [0 [0]]一样访问''。你应该这样做'nestedList [0] [0]' –