0

我正在处理依赖关系图,但无法正确添加我的依赖关系和依赖关系。

我的设置如下:

private List<Tuple<string, string>> DG;
private Dictionary<string, List<string>> dependants;
private Dictionary<string, List<string>> dependees;

我正在尝试添加到我的字典中,例如:

for (int i = 0; i < DG.Count; i++)
{
    dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2);
}

它给了我错误“Argument2:无法从 void 转换为 System.Collections.Generic.List”,我尝试在第二个参数中添加到新列表。我想我知道为什么会出错,但是我很难想出一种正确添加到字典中的替代方法。

我的目标是这样的:

//DG = {("a", "b"), ("a", "c"), ("b", "d"), ("d", "d")}
//     dependents("a") = {"b", "c"}
//     dependents("b") = {"d"}
//     dependents("c") = {}
//     dependents("d") = {"d"}
//     dependees("a") = {}
//     dependees("b") = {"a"}
//     dependees("c") = {"a"}
//     dependees("d") = {"b", "d"}

所以 ("a", "b") 意味着 "b" 是 "a" 的依赖者,而 "a" 是 "b" 的依赖者

4

1 回答 1

1

它比您的代码长一点,但这可能是您需要的:

for (int i = 0; i < DG.Count; i++)
{
    if (!dependants.ContainsKey(DG[i].Item1)) 
    {
        List<string> temp = new List<string>();
        temp.add(DG[i].Item2); 
        dependants.Add(DG[i].Item1, temp);
    }
    else
        dependants[DG[i].Item1].Add(DG[i].Item2);
}

希望更长的代码可以帮助您理解流程。这只是为了使家属。此外,您在原始代码中缺少一个括号:

dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2);

应该

dependants.Add(DG[i].Item1, new List<string>().Add(DG[i].Item2));
于 2016-09-13T03:55:21.140 回答