在c#中访问object[x]索引会导致object到object[]的强制转换错误

本文关键字:object 转换 错误 索引 访问 | 更新日期: 2023-09-27 18:03:28

我有一段简单的代码:

object[] result = this.getData("baseLogin", args);
if (result.Count() > 0)
   return result[0]; 

方法getData返回对象[]。一切看起来都很好,但result[0]给出以下错误:

不能隐式地将类型"object"转换为"object[]"。
存在显式转换(您是否缺少强制类型转换?)

为什么它把object[]当作object并想把它转换成object[]?

在c#中访问object[x]索引会导致object到object[]的强制转换错误

我假设你的方法的返回类型是object[]而不是object:

object[] DoSomething()
{
    object[] result = this.getData("baseLogin", args);
    if (result.Count() > 0)
       return result[0];  // <- This line returns an object. But the return type
                          // of the method is object[]
}

这取决于你真正需要什么。
如果您真的只想返回第一个对象,请将方法的返回类型更改为object。如果—出于某种原因—您需要返回仅包含第一个元素的object[],请将返回语句更改为:return new object[] { result[0] }; .

如果碰巧getData返回数组的数组,这意味着结果数组中的每个项目都是数组本身,编译器不能知道…你必须像这样显式地转换它:

if (result.Count() > 0)
   return (object[])result[0]; 
如果条目是其他内容,则会给出运行时错误。