Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在任务之间划分循环_C#_Loops_For Loop_Task - Fatal编程技术网

C# 在任务之间划分循环

C# 在任务之间划分循环,c#,loops,for-loop,task,C#,Loops,For Loop,Task,我想在任务之间划分for循环 应该描述我的想法的示例代码: for(int i=0;i

我想在任务之间划分for循环

应该描述我的想法的示例代码:

for(int i=0;i
例如,如果数组计数为20,并且我将chunk count设置为4,那么它将为我们提供块大小5。 第一个任务将处理0到4之间的i,第二个任务将处理5到9、10到14、15到19之间的i。 乐观的情况是,若这个数字是奇数,你们需要额外的任务来处理一些元素

我不能解决两个问题:

  • 如何划分它知道根据区块数,区块大小可以是偶数或奇数
  • 如何声明任务了解上述内容

  • 在有人说我应该先尝试自己之前:如果我知道该怎么做,我会尝试。我问是因为我不知道。这就是论坛的目的。疯狂的想法,我知道。

    OP的文本有点混乱/模糊。所以,我将采取这一部分的行动,并试图回答它在两个不同的方式

    例如,如果数组计数为20,并且我将chunk count设置为4,那么它将为我们提供块大小5。第一个任务将处理0到4之间的i,第二个任务将处理5到9、10到14、15到19之间的i

    注意,我将使用扩展方法
    Batch


    如果我们想为每个“块”调用单个方法

    void PerformActionsOnAllItems(IEnumerable<string> items)
    {
        int chunkSize = 5;
        foreach(IEnumerable<string> chunk in items.Batch(chunkSize))
        {
            PerformAction(chunk);
        }
    }
    
    void PerformAction(IEnumerable<string> chunkItems)
    {
        Console.WriteLine("---- CHUNK -----");
        foreach(string item in chunkItems)
        {
            Console.WriteLine("Item: " + item);
        }
    }
    
    void PerformActionsOnAllItems(IEnumerable<string> items)
    {
        int chunkSize = 5;
        int chunkNumber = 0;
        foreach(IEnumerable<string> chunk in items.Batch(chunkSize))
        {
            if((chunkNumber % 2) == 0)
            {
                PerformEvenAction(chunk);
            }
            else
            {
                PerformOddAction(chunk);
            }
            ++chunkNumber;
        }
    }
    
    void PerformEvenAction(IEnumerable<string> chunkItems)
    {
        Console.WriteLine("---- EVEN CHUNK -----");
        foreach(string item in chunkItems)
        {
            Console.WriteLine("Even Item: " + item);
        }
    }
    
    void PerformOddAction(IEnumerable<string> chunkItems)
    {
        Console.WriteLine("---- ODD CHUNK -----");
        foreach(string item in chunkItems)
        {
            Console.WriteLine("Odd Item: " + item);
        }
    }
    
    void performationsonallitems(IEnumerable items)
    {
    int chunkSize=5;
    foreach(items.Batch(chunkSize))中的IEnumerable块
    {
    表演(语块);
    }
    }
    无效性能(IEnumerable chunkItems)
    {
    Console.WriteLine(--CHUNK-----);
    foreach(chunkItems中的字符串项)
    {
    Console.WriteLine(“项:+项”);
    }
    }
    

    如果我们想在每个“块”使用哪种方法之间进行切换

    void PerformActionsOnAllItems(IEnumerable<string> items)
    {
        int chunkSize = 5;
        foreach(IEnumerable<string> chunk in items.Batch(chunkSize))
        {
            PerformAction(chunk);
        }
    }
    
    void PerformAction(IEnumerable<string> chunkItems)
    {
        Console.WriteLine("---- CHUNK -----");
        foreach(string item in chunkItems)
        {
            Console.WriteLine("Item: " + item);
        }
    }
    
    void PerformActionsOnAllItems(IEnumerable<string> items)
    {
        int chunkSize = 5;
        int chunkNumber = 0;
        foreach(IEnumerable<string> chunk in items.Batch(chunkSize))
        {
            if((chunkNumber % 2) == 0)
            {
                PerformEvenAction(chunk);
            }
            else
            {
                PerformOddAction(chunk);
            }
            ++chunkNumber;
        }
    }
    
    void PerformEvenAction(IEnumerable<string> chunkItems)
    {
        Console.WriteLine("---- EVEN CHUNK -----");
        foreach(string item in chunkItems)
        {
            Console.WriteLine("Even Item: " + item);
        }
    }
    
    void PerformOddAction(IEnumerable<string> chunkItems)
    {
        Console.WriteLine("---- ODD CHUNK -----");
        foreach(string item in chunkItems)
        {
            Console.WriteLine("Odd Item: " + item);
        }
    }
    
    void performationsonallitems(IEnumerable items)
    {
    int chunkSize=5;
    int chunkNumber=0;
    foreach(items.Batch(chunkSize))中的IEnumerable块
    {
    如果((chunkNumber%2)==0)
    {
    执行事件(区块);
    }
    其他的
    {
    表演(语块);
    }
    ++组块数;
    }
    }
    作废PerformEventAction(IEnumerable chunkItems)
    {
    Console.WriteLine(“----偶数块------”);
    foreach(chunkItems中的字符串项)
    {
    Console.WriteLine(“偶数项:+项”);
    }
    }
    void performodAction(IEnumerable chunkItems)
    {
    Console.WriteLine(“----奇数块------”);
    foreach(chunkItems中的字符串项)
    {
    Console.WriteLine(“奇数项:+项”);
    }
    }
    
    感谢您抽出时间分享您的问题。你要什么还不清楚。你的目标和困难是什么?到目前为止你做了什么?请尝试更好地解释您的问题、开发环境、数据类型和预期结果,以及或多或少地共享代码(无屏幕截图)、屏幕图像或草图、用户故事或场景图。为了帮助您改进您的请求,请阅读&。我根本不明白您在说什么。你能澄清这个问题并补充更多细节吗?提到的任务是什么?你说的除法是什么意思?什么是块计数?此外,Stack Overflow不是一个论坛:它是一个数据库,有人在其中发布关于某个问题的问题,而其他人则试图回答和解决问题,以帮助编码人员并改善世界计算工作。因此,这需要最少的具体数据输入来完成一个过程以获得结果。在某种程度上,如果没有完整和准确的数据,就不可能有任何过程,因此就不会有输出……类似这样的情况@MikeChristiansen我也有类似的想法,但并没有理由拆分数组本身,因为它是空函数。@Perro12-这可能会澄清我所说的。