我有一个将Java代码转换为C#的给定任务。如何在c#中使用Java的get()方法
这是Java代码:
public void addEdge(String node1, String node2) {
LinkedHashSet<String> adjacent = map.get(node1);
if(adjacent==null) {
adjacent = new LinkedHashSet();
map.put(node1, adjacent);
}
adjacent.add(node2);
}
这里是我的C#代码:
public void addEdge(string node1, string node2) {
if (map.ContainsKey(node1)){
OrderedSet<string> adjacent = map[node1];
if (adjacent == null)
{
adjacent = new OrderedSet<string>();
map.Add(node1, adjacent);
}
adjacent.Add(node2);
}
else
throw new Exception(String.Format("Key {0} was not found", node1));
}
当我运行该程序,我得到以下异常: “给定的键不存在在字典中“
我的错误在哪里?
EDIT1: 在这里,我已经声明地图:
private Dictionary<string, OrderedSet<string>> map = new Dictionary<string, OrderedSet<string>>();
EDIT2: 我得到以下行除外:在Java中相当于
map.Add(node1, adjacent);
这是您的实际代码或试图总结的问题?我没有在任何地方看到“地图”,你的警卫应该防止这种异常。你确定这个方法中发生异常吗? – 2014-11-21 22:31:43
尝试总结该问题。我声明它在方法 – user3000138 2014-11-21 22:33:18
之上也许它是TryGetValue而不是ContainsKey ..但我不知道如何使用它 – user3000138 2014-11-21 22:57:45