如何从阵列中删除项目?

时间:2014-02-05 12:56:01

标签: c# arrays

我想知道如何删除数组中的项目。

string[] drinks = { "Water", "Juice", "Beer" };

我想删除“啤酒”;我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

数组具有固定大小,因此您无法真正“删除”某个项目。您可以将其替换为null,但随后您的数组将具有一个empy“单元格”。或者您可以创建一个不包含该项的新数组实例,如Sameer的回答所示。

如果您需要能够添加或删除项目,则应使用列表(例如List<T>)而不是数组。

List<string> drinks = new List<string> { "Water", "Juice", "Beer" };

...

drinks.Remove("Water");

答案 1 :(得分:2)

   drinks = drinks.Where(w => w != "Beer").ToArray();

答案 2 :(得分:0)

您可以考虑使用HashSet<string>而不是数组来保存此数据。与列表和数组的O(N)相比,Hashset<>具有O(1)复杂度添加和删除操作。

这在很大程度上取决于您的预期用途,但它可能会更好。这可能是完全矫枉过正 - 你的里程可能会有所不同。 :)

代码如下所示:

var drinks = new HashSet<string>
{
    "Water",
    "Juice",
    "Beer"
};

drinks.Remove("Beer");

如果您想为每种饮品存储一个值,则可以使用Dictionary<>代替。例如:

var drinks = new Dictionary<string, int>();

drinks["Water"] = 100;
drinks["Juice"] = 200;
drinks["Beer"]  = 300;

Console.WriteLine("Value of beer is " + drinks["Beer"]);

drinks.Remove("Beer");

此示例使用饮品名称存储int值,但您可以使用您喜欢的任何类型。