C# 最佳实践:嵌套ForEach
嵌套“foreach”的数量是否有最佳实践 也就是说,我在复杂字典上螺旋式地使用嵌套的“foreach”,它是否会开始产生“可能”影响性能的开销?这是否值得考虑呢 为了使其具体化,而不是主观化: 我有3个复杂的字典,看起来像这样C# 最佳实践:嵌套ForEach,c#,nested-loops,C#,Nested Loops,嵌套“foreach”的数量是否有最佳实践 也就是说,我在复杂字典上螺旋式地使用嵌套的“foreach”,它是否会开始产生“可能”影响性能的开销?这是否值得考虑呢 为了使其具体化,而不是主观化: 我有3个复杂的字典,看起来像这样 Dictionary<int, Dictionary<string, XObject>() Dictionary<string, List<YObject>() Dictionary<string, Dictionary<
Dictionary<int, Dictionary<string, XObject>()
Dictionary<string, List<YObject>()
Dictionary<string, Dictionary<string, List<ZObjects>()
字典
foreach语句没有“上下文切换”
内存:非常不相关,内存由数据而不是枚举数获取(由foreach语句使用)
可维护性:考虑重构代码添加方法来执行项
实现这一点的一个清晰简洁的方法是在功能上将它们分开。考虑:
// represents outer loop
IEnumerable<KeyValuePair<string, string>> Operation1(IEnumerable<KeyValuePair<string, string>> input)
{
// outer loop processing
IEnumerable<KeyValuePair<string, string>> output = Operation2(input);
return output;
}
// which feeds in to...
IEnumerable<KeyValuePair<string, string>> Operation2(IEnumerable<KeyValuePair<string, string>> input)
{
// work on it
IEnumerable<KeyValuePair<string, string>> output = Operation3(input);
return output;
}
// and finally
IEnumerable<KeyValuePair<string, string>> Operation3(IEnumerable<KeyValuePair<string, string>> input)
{
// work on it
return input;
}
//表示外部循环
IEnumerable操作1(IEnumerable输入)
{
//外循环处理
IEnumerable输出=操作2(输入);
返回输出;
}
//这是为了。。。
IEnumerable操作2(IEnumerable输入)
{
//努力吧
IEnumerable输出=操作3(输入);
返回输出;
}
//最后
IEnumerable操作3(IEnumerable输入)
{
//努力吧
返回输入;
}
这保持了循环的功能分离,顺序可以改变,每个都是一个谨慎的工作单位。
考虑到这种结构,考虑创建一些更好的封装和描述数据的自定义类。它只会更具可读性