如何解决C#词典模式,哪个最好?
| 这些模式中的哪一个应该比其他更受欢迎,为什么?foreach(KeyValuePair<string,Dictionary<string,string>> data in
new Dictionary<string,string>> {
{\"HtmlAttributes\",this.HtmlAttributes},{\"Content\",this.Content}
})
{
foreach(KeyValuePair<string,string> entry in data.Value)
{
// do something
}
}
要么
Dictionary<string,string>> data = new Dictionary<string,string>>();
data.Add(\"HtmlAttributes\",this.HtmlAttributes);
data.Add(\"Content\",this.Content);
foreach(KeyValuePair<string,IDictionary<string,string>> entry in data)
{
// Do something
}
data.Clear(); // not sure if this is needed either
data = null; // gc object
请不要用\“ use var \\”回答,因为我不喜欢使用它。
回复:var
(2年后):我必须添加一些内容以实现此目的。回想起来,阅读Eric Lipert的博客文章有关何时以及为何使用var
完全有意义。如果使用得当,这意味着不是一直都在使用,这很有意义,并且缩短了一个人需要读取的代码量。关于使用哪种初始化,对象初始化器很好,但是将初始化与ѭ4或其他处理分开可以使代码更具可读性。
解决方法
在两个版本之间,我希望有一些东西:拆分创建和迭代,但是使用集合初始化器。
Dictionary<string,Dictionary<string,string>> dicts =
new Dictionary<string,string>> {
{\"HtmlAttributes\",this.HtmlAttributes},{\"Content\",this.Content}
});
foreach(KeyValuePair<string,string>> data in dicts)
{
foreach(KeyValuePair<string,string> entry in data.Value)
{
// do something
}
}
或等效(实际上,从编译器和IDE的角度来看,以下内容完全相同):
var dicts = new Dictionary<string,this.Content}
});
foreach(var data in dicts)
{
foreach(var entry in data.Value)
{
// do something
}
}
另外,如果您使用Dictionary
作为对的列表,则可以使用List<KeyValuePair<K,V>>
或(在.Net 4上)List<Tuple<T1,T2>>
。
, 我认为Kent Boogaart和quakkels的评论是正确的。 var在这里有意义。如果我必须选择两个中的一个,我会说第二个更好,因为它更容易阅读。
, 我认为您的第二个版本更具可读性。鉴于您不喜欢使用var
,这似乎更为重要,因为您的第一个版本让我头疼。
我还认为将创建集合的代码与遍历它的代码混合起来有点费解。
因此,对我来说,这是可读性的问题,我更喜欢第二个版本。但最后,任何一个都行得通。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。