gpt4 book ai didi

c# - 无法从对象数组转换为字符串数组

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:31 25 4
gpt4 key购买 nike

这是我的职能。

public Dictionary<string, string> ArrayToDictionaryConverter(object [] objArray)
{
string[] strArray = new string[objArray.Length];
strArray =(string[])objArray;
Dictionary<string, string> dictionary = null;
try
{
dictionary = new Dictionary<string, string>();
for (int iVal = 0; iVal < strArray.Length; )
{
dictionary.Add(strArray[iVal], strArray[iVal + 1]);
iVal += 2;
}
}
catch (Exception ex)
{
}
return dictionary;
}

获取错误:

Unable to cast object of type 'System.Object[]' to type 'System.String[]'.

为什么?这是错误的约定/转换吗?

最佳答案

如果表达式实际上不是该类型或兼容类型(或存在显式转换),则不能将其强制转换为特定类型。

在这种情况下,数组不是 string[] - 它是 object[]。它可能是一个string[],这就是编译器允许您首先编写强制转换的原因 - 但在执行时 CLR 发现它只是一个 object[]

您是否希望数组中的每个元素都字符串?如果是这样,您应该单独转换每个元素。如果不是,您将必须添加对 ToString 的调用(或将每个元素转换为字符串的其他方式)- 但要注意空值。

顺便说一句,空的 catch block 真的是个坏主意。如果出现问题,您真正希望发生什么?你想以什么方式处理什么样的错误?需要考虑的一些错误:

  • 如果其中一个键为空怎么办?
  • 如果您得到重复的 key 怎么办?
  • 如果输入数组的元素个数为奇数怎么办?

最后,我建议将 i += 2 放在 for 循环的“header”中,而不是 block 的末尾。

关于c# - 无法从对象数组转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1984406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com