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

如何从ItemData列表提取WeaponData派生类对象并生成专属列表?

解决从List提取WeaponData实例的类型转换问题

编译器仅识别slot.ItemData为基类ItemData类型,即使它实际是派生类WeaponData的实例,也需要显式转换才能存入List<WeaponData>。以下是几种可行方案:

1. 显式强制转换

适用于你确定slot.ItemData一定是WeaponData实例的场景,转换失败会抛出InvalidCastException:

if (slot.IsFilled)
{
    weapons.Add((WeaponData)slot.ItemData);
}

2. 使用as运算符安全转换

转换失败时返回null,可配合空值判断避免运行时异常,适合不确定对象类型的场景:

if (slot.IsFilled)
{
    WeaponData weapon = slot.ItemData as WeaponData;
    if (weapon != null)
    {
        weapons.Add(weapon);
    }
}

3. LINQ批量过滤转换

如果需要从整个List<ItemData>中提取所有WeaponData实例,用OfType<T>方法一步完成过滤和转换:

// 假设原ItemData集合为itemDataList
List<WeaponData> weapons = itemDataList.OfType<WeaponData>().ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:54:23