分配system.object类C#

时间:2016-02-26 21:43:42

标签: c#

我有一个像这样的system.object:

object paramNames = new object[]
        {
            1,
            2,
            3,
            4,
        }; 

我正在尝试分配值,我需要在循环中执行它而不是手动执行,所以......这样:

for (int i = 0; i < inputcount; i++)
        {
            paramNames[i] = int.Parse(textreader.ReadLine());
        }

但是我遇到了这个错误:无法将带有[]的索引应用于'object'类型的表达式。 如果你能帮助我,我真的很感激!

3 个答案:

答案 0 :(得分:1)

您需要执行以下操作:

object[] paramNames = new object[]
        {
            1,
            2,
            3,
            4,
        }; 

或更好

var paramNames = new int[]
            {
                1,
                2,
                3,
                4,
            }; 

或更好

var paramNames = new[]
        {
            1,
            2,
            3,
            4,
        }; 

答案 1 :(得分:1)

您的问题是,您已将parmNames声明为Object类型。您需要将变量声明为类型Object[]

像这样:

object[] paramNames = new object[]
        {
            1,
            2,
            3,
            4,
        }; 

有趣的是:object[] paramNames = new object[]实际上是合法的,因为Object[]可以转换为Object

类型

这意味着您也可以在技术上修复它:

((Object[])paramNames)[i] = int.Parse(textreader.ReadLine());

你不应该这样做,但不太清楚,但它说明了为什么赋值不会抛出编译器异常,并且尝试的赋值也是如此。

答案 2 :(得分:0)

您可以使用以下

var paramNames = new List<object>();

for (int i = 0; i < inputcount; i++)
{
    paramNames.Add(int.Parse(textreader.ReadLine()));
}