在C#中访问object [x] index会将cast对象赋予object []错误

时间:2011-07-25 08:30:59

标签: c# arrays object

我有一段简单的代码:

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

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

  
    

无法将类型'object'隐式转换为'object []'     存在显式转换(您是否错过了演员?)

  

为什么它将object []视为对象并希望将其转换为object []?

2 个答案:

答案 0 :(得分:5)

我假设您的方法的返回类型为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语句更改为:return new object[] { result[0] };

答案 1 :(得分:1)

如果有任何机会getData返回数组数组,意味着结果数组中的每个项都是数组,编译器无法知道...你必须像这样明确地转换它:< / p>

if (result.Count() > 0)
   return (object[])result[0]; 

如果该项目是其他内容,则会产生运行时错误。