我创建了一个二维List
。我想使用for
循环为两个维度添加两个不同的字符串。但问题是,Add
有任何选项可以在第一维中保存我的字符串。愿任何人都能帮忙吗?
List<Tuple<int, List<string>>> List_type1 = new List<Tuple<int, List<string>>>();
List<Tuple<int, List<string>>> List_type2 = new List<Tuple<int, List<string>>>();
int indx1;
int indx2;
List<TreeNode> IndexList1 = new List<TreeNode>();
IndexList1 = FindIndex(treeView1.Nodes, IndexList1);
indx1 = IndexList1[0].Index;
foreach (TreeNode node1 in nodes1)
{
for (int i = 0; i < actions1.Count; i++)
{
List_type1.Add(new Tuple<int, List<string>>(i, new List<string>()));
TreeNode str1 = node1.Nodes[indx1].Nodes[i];
string TypeAction1 = actions1[i].Attributes["type"].Value;
string NameAction1 = actions1[i].Attributes["name"].Value;
List_type1[i].Item1.Equals(TypeAction1);
List_type1[i].Item2.Add(NameAction1);
}
}
其中nodes1
是TreeNodeCollection
,FindIndex
找到TreeNodes
中的节点数。
答案 0 :(得分:1)
当你这样做的时候
List_type1[i].Item1.Equals(TypeAction1);
列表为空。你应该添加新的元组然后再进行比较。但你的比较是无用的?因为不使用它的结果。
另一种方法是在循环之前初始化List。
或者你可能会混淆两行代码而你的意思是:
List_type1[i].Item2.Add(NameAction1);
List_type1[i].Item1.Equals(TypeAction1);
但无论如何,第二行代码毫无意义。
答案 1 :(得分:1)
我发现它可能如下:
List<Tuple<int, List<string>, List<string>>> List_type1 = new List<Tuple<int, List<string>, List<string>>>();
foreach (TreeNode node1 in nodes1)
{
for (int i = 0; i < actions1.Count; i++)
{
List_type1.Add(new Tuple<int, List<string>, List<string>>(i, new List<string>(), new List<string>()));
TreeNode str1 = node1.Nodes[indx1].Nodes[i];
list1.Add(str1);
string TypeAction1 = actions1[i].Attributes["type"].Value;
string NameAction1 = actions1[i].Attributes["name"].Value;
List_type1[i].Item2.Add(TypeAction1);
List_type1[i].Item3.Add(NameAction1);
}
}
或者另一种有用的方法是创建array
:
string[,] Match_result = new string[list1.Count, 2];
foreach (TreeNode node1 in nodes1)
{
for (int i = 0; i < actions1.Count; i++)
{
TreeNode str1 = node1.Nodes[indx1].Nodes[i];
list1.Add(str1);
string TypeAction1 = actions1[i].Attributes["type"].Value;
string NameAction1 = actions1[i].Attributes["name"].Value;
Match_result[i, 0] = TypeAction1;
Match_result[i, 1] = NameAction1;
}
}
答案 2 :(得分:0)
在行中:
List_type1[i].Item1.Equals(TypeAction1);
您通过索引调用对象,但列表为空。