C# 如何从常规数组中删除元素

本文关键字:删除 元素 数组 常规 | 更新日期: 2023-09-27 18:30:37

我正在使用一个有 5 个元素的常规数组,我想删除该元素,但我不想使用任何集合,例如 arrayListList

我的代码是

for (int c = 0; c < Alpha.Length; c++)
{
    if (Alpha[c].Power< 0)
    {
      //  Alpha.s = null;
    }
}

C# 如何从常规数组中删除元素

来自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>