你的猜測幾乎是正確的。你想使用什麼是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]' –