【问题标题】:Adding string list item to int array将字符串列表项添加到 int 数组
【发布时间】:2012-12-30 21:39:34
【问题描述】:

您好,我需要从字符串列表中获取字符串项并将其添加到我尝试这样的 int 数组中,但它写给我的错误不能隐式地将 int 类型转换为 int[] 但是在序列中,我只向数组中的一项添加了一个 int,所以请问有什么问题

private void buttonGenerateO_Click(object sender, EventArgs e)
            {
            List<string> AgentNumbers = new List<string>();
            List<string> AgentRide = new List<string>();
            int pocet = AgentNumbers.Count;
            int[][] dvouRozmernePole = new int[2][];
            dvouRozmernePole[0] = new int[pocet];
            dvouRozmernePole[1] = new int[pocet];

        foreach (string AgeNumb in AgentNumbers)
        {
            for (int i = 0; i < dvouRozmernePole[0].Length; i++)
                dvouRozmernePole[i] = Convert.ToInt32(AgeNumb);

        }

        foreach (string AgeRide in AgentRide)
        {
            for (int i = 0; i < dvouRozmernePole[1].Length; i++)
                dvouRozmernePole[i] = Convert.ToInt32(AgeRide);

        }

【问题讨论】:

    标签: c# arrays string list int


    【解决方案1】:

    看看这个声明:

    int[][] dvouRozmernePole = new int[2][];
    

    所以dvouRozmernePole 是一个数组数组。现在看这里:

    dvouRozmernePole[i] = Convert.ToInt32(AgeNumb);
    

    您正在尝试将 int 值分配给 dvouRozmernePole[i],但您不能这样做,因为它应该是 int[]

    我怀疑你想要:

    dvouRozmernePole[0][i] = Convert.ToInt32(AgeNumb);
    

    话虽如此,鉴于以下几行:

    List<string> AgentNumbers = new List<string>();
    List<string> AgentRide = new List<string>();
    int pocet = AgentNumbers.Count;
    int[][] dvouRozmernePole = new int[2][];
    dvouRozmernePole[0] = new int[pocet];
    dvouRozmernePole[1] = new int[pocet];
    

    ...无论如何,您总会有空列表,因此没有要转换的值。

    真的需要使用数组吗?在任何地方使用List&lt;T&gt; 几乎肯定会更简单。

    LINQ 也可以使这更简单。例如:

    int[] numbers = AgentNumbers.Select(x => int.Parse(x)).ToArray();
    int[] rides = AgentRide.Select(x => int.Parse(x)).ToArray();
    int[][] dvouRozmernePole = { numbers, rides };
    

    【讨论】:

      【解决方案2】:

      dvouRozmernePole 是一个int[] 的数组,而Convert.ToInt32 返回一个int。因此在:

      dvouRozmernePole[i] = Convert.ToInt32(AgeNumb);
      

      dvouRozmernePole[i] 是一个int[],而您正在尝试分配一个int

      看起来像你想要的:

      dvouRozmernePole[0][i] = Convert.ToInt32(AgeNumb);
      

      以后

      dvouRozmernePole[1][i] = Convert.ToInt32(AgeRide);
      

      你可以这样做:

      int[][] dvouRozmernePole = new int[2][]
      {
          AgentNumbers.Select(num => Convert.ToInt32(num)).ToArray(),
          AgentRide.Select(ride => Convert.ToInt32(ride)).ToArray()
      };
      

      初始化数组。

      【讨论】:

      • 好吧,我是个菜鸟,所以我如何将项目从列表添加到数组?我用谷歌搜索了 3 个小时,这是一个结果,但现在我堆积了......我该如何填充数组?
      • @user1936559 - 有几种方法,一种是类似于您所拥有的循环,另一种是使用 LINQ。我添加了一个 LINQ 示例。
      【解决方案3】:

      错误很明显。在声明中

      dvouRozmernePole[i] = Convert.ToInt32(AgeNumb);
      

      你将一个整数分配给一个数组。

      【讨论】:

        【解决方案4】:

        dvouRozmernePole 是一个整数数组

        所以dvouRozmernePole[i] 期望和 int[] 而不是 int 值

        试试

        你是说

            for (int i = 0; i < dvouRozmernePole[0].Length; i++)
                   dvouRozmernePole[0][i] = Convert.ToInt32(AgeNumb);
            }
        
            foreach (string AgeRide in AgentRide)
            {
                for (int i = 0; i < dvouRozmernePole[1].Length; i++)
                    dvouRozmernePole[1][i] = Convert.ToInt32(AgeRide);
        
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多