C# “为什么?”;列表<;T>;。插入(索引,T)“;是否添加到列表的末尾而不是索引?
我有一个带滴答功能的计时器:C# “为什么?”;列表<;T>;。插入(索引,T)“;是否添加到列表的末尾而不是索引?,c#,.net,wpf,C#,.net,Wpf,我有一个带滴答功能的计时器: void CollisionTimer_Tick(object sender, EventArgs e) { int j; angle += 10; angle %= 360; int i = angle / 10 - 1; if (i < 0) j = 0; else j =i % 35;
void CollisionTimer_Tick(object sender, EventArgs e)
{
int j;
angle += 10;
angle %= 360;
int i = angle / 10 - 1;
if (i < 0)
j = 0;
else
j =i % 35;
ObstaclePoints.Insert(j, getPoint(angle));
}
void CollisionTimer\u勾选(对象发送方,事件参数e)
{
int j;
角度+=10;
角度%=360;
int i=角度/10-1;
if(i<0)
j=0;
其他的
j=i%35;
障碍点。插入(j,获取点(角度));
}
理想的效果是当j在0-35之间迭代时,点列表“ObstaclePoints”得到36点
我遇到的问题是,在前36个滴答声之后,j回到0,列表不断增加,我在列表中得到了超过36分。(也就是说,在另外36次滴答声之后,我在列表中得到72分,而不是前36次被覆盖)
为什么会发生这种情况?我如何解决
列表。插入
不会覆盖指定索引处的项目,但会在此位置插入一个项目。使用数组ObstaclePoints[35]
代替地址,如下代码所示:
ObstaclePoints[j] = getPoint(angle);
这是什么语言?看起来应该是,但我没有看到那个标签。也不是C,被否决了。@iharob-它是C,标签在那里。它是C。。im在visual Studio中使用WPF插入不会覆盖列表中的现有项,它会在位置x添加新项。这也适用于列表。不必是数组。@Clemens另外,在尝试访问项目之前,请记住将项目添加到列表中。@Clemens OK,但如果列表的计数是常量,我更喜欢数组。使用列表,您必须在访问之前首先添加项目,正如Kyle所述。