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

C#中通过ArrayList引用赋值数组时类型转换错误的解决方法

解决ArrayList中取出字符串数组时的类型转换错误

这个问题很常见,核心原因在于ArrayList是非泛型集合,它内部所有元素都会被当作object类型存储。当你尝试直接将arraysNames[i1]赋值给string[]类型的变量时,C#无法自动完成object到string[]的隐式转换,所以抛出了Cannot implicitly convert 'object' to 'string'的错误。

给你两种可行的解决办法:

方案一:显式强制类型转换

如果你坚持使用ArrayList,可以通过强制转换将object类型的元素转成string[]:

string[] currentArrayNames = (string[])arraysNames[i1];

⚠️ 注意:这种方式要求你确定arraysNames[i1]的实际类型确实是string[],否则运行时会抛出InvalidCastException异常。

方案二:使用泛型集合List<string[]>替代ArrayList(推荐)

从C# 2.0开始,泛型集合就已经替代了非泛型集合的主流地位,它类型安全、性能更好,还能避免手动转换的麻烦。修改你的代码如下:

public static string[] traitNames = { "Happiness", "Respect", "Authority" };
// 假设suppliesNames是同类型的string[]数组
private List<string[]> arraysNames = new List<string[]> { traitNames, suppliesNames };
// 直接赋值,无需转换
string[] currentArrayNames = arraysNames[i1];

如果你的项目使用的是C# 10或更高版本,还可以用目标类型推断简化List的声明:

private var arraysNames = new List<string[]> { traitNames, suppliesNames };

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:56:14