C# 如何从常规数组中删除元素
本文关键字:删除 元素 数组 常规 | 更新日期: 2023-09-27 18:30:37
我正在使用一个有 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;
就
任何更改数组长度的操作而言,您不能从数组中"删除"元素:一旦创建了数组,其长度就是固定的。选项:
- 将元素值更改为 null 或其他适当的值
- 将所有其他元素移向头部,并将最后一个元素值设置为 null 等
- 创建一个长度较小的新数组,可能将其赋回最初引用较大数组的变量/属性
不过,目前还不清楚您为什么拒绝正常的集合。您应该非常仔细地考虑此决定 - 使用内置集合类型几乎总是更好的解决方案。
您可以使用 LINQ:
Alpha = Alpha.Where(ob => bo.Power >= 0).ToArray();
请记住 - 它将创建一个新数组。
顺便说一句。为什么你不想使用List<T>
?