C# 提高循环效率/可扩展性
我有一个组成2D网格的像素阵列,我想随时间左右移动这些像素。。。然而,我经常提出的循环是相当低效的,并且不允许在改变运动方面有太多的扩展。任何关于如何改进我已经拥有的东西的想法都将不胜感激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
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是浮点,并且将被更改。移动需要在执行期间发生,所以这很可能在一个单独的线程中运行。我知道移动窗口意味着什么。移动像素意味着什么?不管它意味着什么,这是你的循环的方向,而不是循环。