【发布时间】:2016-07-03 19:40:35
【问题描述】:
有没有比使用下面示例中的两个选项之一更简单的方法来将 source 字典的所有内容复制/添加到 destination Dictionary<T1, T2> 对象?
Dictionary<string, int> source = new Dictionary<string, int>(),
destination = new Dictionary<string, int>();
source.Add("Developers", 1);
source.Add("just", 2);
source.Add("wanna have", 3);
source.Add("FUN!", 4);
// Option 1 (feels like a hack):
//
source.All(delegate(KeyValuePair<string, int> p)
{
destination.Add(p.Key, p.Value);
return true;
});
// Option 2:
//
foreach (string k in source.Keys)
{
destination.Add(k, source[k]);
}
我正在寻找类似.ForEach() 的东西。
【问题讨论】:
-
选项 1 或 2 有效吗?
-
你的意思是像
List.ForEach? Be careful what you wish for.. -
选项 2 非常简单。您有一个循环条件和一个循环内的语句。不要试图强加
ForEach以使其复杂化,也不要将委托传递给具有副作用的查询方法 (All)。 -
@DStanley:是的,我就是这么想的。
-
请参阅this question,了解支持和反对
ForEach方法的一些论据,以及一些可能有效的扩展方法。
标签: c#