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_Performance_Extensibility - Fatal编程技术网

C# 提高循环效率/可扩展性

C# 提高循环效率/可扩展性,c#,loops,performance,extensibility,C#,Loops,Performance,Extensibility,我有一个组成2D网格的像素阵列,我想随时间左右移动这些像素。。。然而,我经常提出的循环是相当低效的,并且不允许在改变运动方面有太多的扩展。任何关于如何改进我已经拥有的东西的想法都将不胜感激 while (true) { for (float i = 0; i < x; i++) { foreach (Pixel p in pixels) { p.move(10, 0); } } for (float i = 0; i < x * 2

我有一个组成2D网格的像素阵列,我想随时间左右移动这些像素。。。然而,我经常提出的循环是相当低效的,并且不允许在改变运动方面有太多的扩展。任何关于如何改进我已经拥有的东西的想法都将不胜感激

while (true)
{
  for (float i = 0; i < x; i++)
  {
    foreach (Pixel p in pixels)
    {
      p.move(10, 0);
    }
  }
  for (float i = 0; i < x * 2; i++)
  {
    foreach (Pixel p in pixels)
    {
      p.move(-10, 0);
    }
  }
  for (float i = 0; i < x; i++)
  {
    foreach (Pixel p in pixels)
    {
      p.move(10, 0);
    }
  }
}
while(true)
{
对于(浮点i=0;i

编辑:抱歉,代码中有一个错误,中间的循环必须是-10。第一个for循环将所有像素向右移动,第二个将它们移回原点,然后向左移动,第三个循环将它们移回原点。

你不能只使用一个循环并使用int吗?三个循环似乎是多余的

使用一个从0到x*2的循环,并在x值上执行移动选择

差不多

for(int i = 0; i < x * 2; i++)
{
    foreach(Pixel p in pixels)
    {
        if (i < x)
        {
            p.move(0.1, 0);
            p.move(10, 0);
            p.move(10, 0);
        }
        else
            p.move(10,0)
     }       
}
for(int i=0;i
您可以在实际使用像素的代码中使用偏移变量。然后通过更改偏移量来移动像素,偏移量是一行代码。

您不应该使用浮点。无限循环是您的第一个问题…这只是为了简单起见,因为x是浮点,并且将被更改。移动需要在执行期间发生,所以这很可能在一个单独的线程中运行。我知道移动窗口意味着什么。移动像素意味着什么?不管它意味着什么,这是你的循环的方向,而不是循环。