分配 system.object 类 C# 的元素

本文关键字:元素 system object 分配 | 更新日期: 2023-09-27 18:36:30

我有一个这样的system.object:

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

我正在尝试分配值,我需要在循环中执行此操作而不是手动执行此操作,因此如下所示:

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

但是我遇到此错误:无法将带有[]的索引应用于"对象"类型的表达式。如果您能帮助我,我真的很感激!

分配 system.object 类 C# 的元素

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

这样:

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

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

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

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

你不应该这样做,它不太清楚,但它显示了为什么赋值不会引发编译器异常,而尝试的赋值会抛出异常。

你需要像下面这样做:

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

或更好

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

或更好

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

你可以按如下方式使用

var paramNames = new List<object>();
for (int i = 0; i < inputcount; i++)
{
    paramNames.Add(int.Parse(textreader.ReadLine()));
}