【发布时间】:2016-03-14 00:23:36
【问题描述】:
我正在解析一个网页,我遇到的问题是 ["www.abc.com/"] 和 ["www.def.com/"] = new List() 出现“语法错误, ',' 预期的。”我做了一个为 HtmlTarget 设置属性的类,public string Id { get; set; } public Action<HtmlElement> Action { get; set; },有人有什么建议吗?
public void Spider(string sURL, HtmlDocument doc, int choice)
{
var urlTargets = new Dictionary<string, List<HtmlTarget>>
{
["www.abc.com/"] = new List<HtmlTarget>()
{
new HtmlTarget
{
Id = "search",
Action = e => e.SetAttribute("value", m_sMfgPartNbr)
},
new HtmlTarget
{
Id = "submit",
Action = e => e.InvokeMember("Click")
}
},
["www.def.com/"] = new List<HtmlTarget>()
{
new HtmlTarget
{
Id = "part",
Action = e => e.SetAttribute("value", m_sMfgPartNbr)
},
new HtmlTarget
{
Id = "submit",
Action = e => e.InvokeMember("Click")
}
}
};
List<HtmlTargets> targets = null;
if (urlTargets.TryGetValue(url, out targets))
{
var inputs = doc.Body.GetElementsByTagName("input");
foreach (HtmlElement element in inputs)
{
var id = element.GetAttribute("id");
foreach(var target in targets)
{
if (target.Id == id)
target.Action(element);
}
}
}
}
【问题讨论】:
-
这不是初始化字典的有效语法 - 请参阅 msdn.microsoft.com/en-us/library/bb531208.aspx。即谷歌'c#初始化字典'
-
@LasseV.Karlsen 我相信语法只从 C# 6.0 开始有效,所以如果 OP 不使用 6.0,那么它将无法工作。
-
完全正确,这是新的 C# 6.0 语法。
-
@CompressedAir 您是否使用 VS 2015 并针对 4.6 框架?如果没有,您将不得不使用旧语法。
-
他不必以 4.6 框架为目标,该语法也适用于旧的 .NET 运行时,只要他使用新的编译器来编译它。
标签: c# list dictionary multidimensional-array