如何在 C# 中删除(或取消)泛型数组列表中的对象? [复制]
Posted
技术标签:
【中文标题】如何在 C# 中删除(或取消)泛型数组列表中的对象? [复制]【英文标题】:How do I remove (or nullify) an object in an array list of generics in C#? [duplicate] 【发布时间】:2020-07-23 19:08:17 【问题描述】:在我的数据结构类中,我的任务是创建给定类型的通用对象的 ArrayList。这本质上是一个行为类似于附加了一些额外功能的数组的类。它看起来像这样。
public class GenericArray<T>
// The array
private T[] array;
private int size;
// Constructor
public GenericArray(int arrsize)
size = arrsize;
array = new T[size + 1];
// Array methods
public T getItem(int index)
return array[index];
public int getCount()
int count = 0;
for(int i = 0; i < array.Length; ++i)
if(array[i] != null)
count++;
size = count;
return count;
我们需要创建用于与数组交互的各种方法。在从数组中删除项时,我遇到了一个特殊问题。我有一个 deleteLast 方法,我假设它只是将最后一项设置为 null,如下所示:
public void deleteLast()
int i = this.getCount()-1;
array[i] = null;
但是,我收到无法将参数转换为 null 的错误,因为 T 可能不是可以为 null 的值类型,这是有道理的。但是,我不知道如何删除它们。我通过 Google 找不到任何有用的信息,所以我来到了 Stack Overflow。
感谢任何帮助。谢谢:)
【问题讨论】:
docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 我现在明白了。非常感谢:) 【参考方案1】:为什么不使用 List
【讨论】:
这会破坏学习如何实现数据结构的目的。 在数组中你实际上并没有删除一个项目。相反,您可以将数组项设置为类型 T 的默认值 我实际上已经处理了有关数组大小调整的案例。我只是没有将它包含在我的示例代码中,因为我觉得没有必要展示我遇到的问题。 哦,是的!你说的对。我现在看到你的评论了??以上是关于如何在 C# 中删除(或取消)泛型数组列表中的对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章