我正在使用一个包含5个元素的常规数组,我想删除该元素,但我不想使用任何集合,例如arrayList
或List
我的代码是
for (int c = 0; c < Alpha.Length; c++)
{
if (Alpha[c].Power< 0)
{
// Alpha.s = null;
}
}
答案 0 :(得分:10)
来自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;
答案 1 :(得分:6)
根据任何改变数组长度的操作,你不能从数组中“删除”一个元素:一旦创建了一个数组,它的长度就固定了。选项:
目前还不清楚为什么你拒绝正常的收藏品。你应该仔细考虑这个决定非常 - 使用内置的集合类型几乎总是是一个更好的解决方案。
答案 2 :(得分:1)
您可以使用LINQ:
Alpha = Alpha.Where(ob => bo.Power >= 0).ToArray();
记住 - 它会创建一个新数组。
顺便说一句。为什么你不想使用List<T>
?