C# 最佳实践:嵌套ForEach

C# 最佳实践:嵌套ForEach,c#,nested-loops,C#,Nested Loops,嵌套“foreach”的数量是否有最佳实践 也就是说,我在复杂字典上螺旋式地使用嵌套的“foreach”,它是否会开始产生“可能”影响性能的开销?这是否值得考虑呢 为了使其具体化,而不是主观化: 我有3个复杂的字典,看起来像这样 Dictionary<int, Dictionary<string, XObject>() Dictionary<string, List<YObject>() Dictionary<string, Dictionary<

嵌套“foreach”的数量是否有最佳实践

也就是说,我在复杂字典上螺旋式地使用嵌套的“foreach”,它是否会开始产生“可能”影响性能的开销?这是否值得考虑呢

为了使其具体化,而不是主观化: 我有3个复杂的字典,看起来像这样

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输入)
    {
    //努力吧
    返回输入;
    }
    

    这保持了循环的功能分离,顺序可以改变,每个都是一个谨慎的工作单位。

    考虑到这种结构,考虑创建一些更好的封装和描述数据的自定义类。它只会更具可读性