我在 C# 中从数组中“删除”元素时遇到问题,但没有使用 System.Collection 和 LINQ。
例如:
我有一个 Product
类,其中包含字段 p_name
、p_number
和 is_useful
(此值为 true
默认情况下);
我还有一个 ShoppingCart
类,它包含字段 market_name
、products_quantity
和 Products
(类型是 Product[]
,存储所有产品)
假设我创建了四个 Product
对象 p1
、p2
、p3
、p4
,然后创建一个 ShoppingCart
对象 sc
,其长度是固定的 Products[4]
( p1
, p2
, p3
& p4
都存储在里面);
然后我将 p2
的 is_useful
值设置为 false
,所以 Products 中的
将对 p2
[4]ShoppingCart
无用,需要从 Products[4]
中删除。
是否可以从 Products[4]
中删除 p2
,并且此数组的长度将减少到 3 (Products[3]
和 p1
, p3
& p4
里面),它仍然属于 Shoppingcart
对象 sc
(比如当我使用 sc.Products
获取所有产品时,它会引用新的 Products[3]
)?
谢谢!
最佳答案
使用Array.Resize
静态方法:
- 用最后一个替换你想删除的元素
- 调用
Array.Resize
并将您的数组引用和长度设置为当前长度 - 1
// let's say you'd like to remove the i-th element
//
// You don't have to move Products[i] to the last position,
// because it will be removed anyway.
sc.Products[i] = sc.Products[sc.Products.Length - 1];
// Call Array.Resize to change array size
Array.Resize(sc.Products, sc.Products.Length - 1);
关于c# - 如何在不使用 C# 中的 System.Collection 或 LINQ 的情况下从数组中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18684129/