You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中从数组移除指定字符串?实现物品售卖功能

在C#中无需指定索引,从字符串数组移除指定元素

C#里的数组是固定长度的,没法直接删除元素,所以得换个思路实现你的需求,下面给两种实用方案:

方案一:改用List<string>(推荐,更适合背包这种动态增减的场景)

把原来的数组换成List<string>,它自带的Remove()方法可以直接传入要移除的字符串,不用管索引。如果背包里可能有多个相同物品,用RemoveAll()可以一次性删完所有匹配项。

修改你的代码示例:

long balance = 100;
// 把数组改成List,支持动态修改
List<string> inventory = new List<string> {"Carp", "Laptop", "Mobile"};

Console.WriteLine("What do you want to sell?");
string sellingItem = Console.ReadLine();

// 先判断物品是否存在于背包
if (inventory.Contains(sellingItem))
{
    Console.WriteLine($"Selling {sellingItem}");
    // 用字典存物品对应价格,避免硬编码判断不同物品的售价
    var itemPrices = new Dictionary<string, long>
    {
        {"Carp", 15},
        {"Laptop", 500},
        {"Mobile", 300}
    };
    balance += itemPrices[sellingItem];
    
    // 移除指定物品(只删第一个匹配项)
    inventory.Remove(sellingItem);
    // 如果要移除所有相同物品,替换成下面这句:
    // inventory.RemoveAll(item => item.Equals(sellingItem));
}
else
{
    Console.WriteLine("You don't have this item!");
}

// 输出测试结果
Console.WriteLine($"Current balance: {balance}");
Console.WriteLine("Remaining inventory: " + string.Join(", ", inventory));

方案二:保留数组,用LINQ创建新数组

如果一定要用数组,可以通过LINQ的Where()方法过滤掉要移除的元素,生成一个新数组。注意这是创建新数组,原数组不会被修改。

示例代码:

long balance = 100;
string[] inventory = {"Carp", "Laptop", "Mobile"};

Console.WriteLine("What do you want to sell?");
string sellingItem = Console.ReadLine();

if (inventory.Contains(sellingItem))
{
    Console.WriteLine($"Selling {sellingItem}");
    balance += 15; // 同样建议用字典统一管理物品价格
    
    // 过滤掉要移除的物品,生成新数组
    inventory = inventory.Where(item => !item.Equals(sellingItem)).ToArray();
}

// 输出测试结果
Console.WriteLine($"Balance: {balance}");
Console.WriteLine("Inventory: " + string.Join(", ", inventory));

补充说明

  • 方案一更适合背包场景,因为List支持动态添加/删除,后续扩展捡物品、批量操作等功能更方便。
  • 方案二适合必须用数组的场景,但每次修改都要创建新数组,性能和灵活性不如List。

内容的提问来源于stack exchange,提问作者Itsmemonzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:00:58