我正在使用具有 5 个元素的常规数组我想删除该元素,但我不想使用任何集合,例如arrayList
或List
我的代码是
for (int c = 0; c < Alpha.Length; c++)
{
if (Alpha[c].Power< 0)
{
// Alpha.s = null;
}
}
来自MSDN
维数和每个维的长度是在创建数组实例时建立的。在实例的生命周期内无法更改这些值。
(强调我的)。
根据设计,数组在 C# 中具有固定大小,因此应分配一个新数组:
Alpha = Alpha.Where(a => a.Power >= 0).ToArray();
没有 Linq:
TheType[] alpha2 = new TheType[Alpha.Length];
int j=0;
for (int i=0; i < Alpha.Length; i++)
if(Alpha[i].Power >= 0)
{
alphaTmp[j++] = Alpha[i];
}
Array.Resize(ref alphaTmp, j);
Alpha = alphaTmp;
就任何改变数组长度的操作而言,您不能从数组中“删除”一个元素:一旦创建了一个数组,它的长度就是固定的。选项:
不过,目前尚不清楚您为什么拒绝正常的收藏。您应该非常仔细地考虑这个决定——使用内置集合类型几乎总是一个更好的解决方案。
您可以使用 LINQ:
Alpha = Alpha.Where(ob => bo.Power >= 0).ToArray();
请记住 - 它将创建一个新数组。
顺便提一句。为什么你不想使用List<T>
?