C#不能将int []转换为int

时间:2017-06-09 04:27:55

标签: c#

public int[] kdPegawai;
if (Convert.ToInt16(comboBoxJumlahPegawai.Text) == 4)
{
    kdPegawai[1] = new int[] { Convert.ToInt16(comboBoxKdPegawai.Text) };
}

我需要将组合框中的值放到kdPegawai数组中,但不断出现这样的错误:

  

无法将int []隐式转换为int

4 个答案:

答案 0 :(得分:3)

您无法将整个数组分配给另一个数组中的单个值(除非它是2D数组)。

所以这一行应改为:

kdPegawai[1] = Convert.ToInt16(comboBoxKdPegawai.Text);

你必须在为数组赋值之前初始化数组。

如果你只想插入一个像你在代码中看到的那样的值,那么你也可以这样做:

kdPegawai = new int[] { Convert.ToInt16(comboBoxKdPegawai.Text) };

答案 1 :(得分:1)

数组值赋值错误

 public int[] kdPegawai = new int[1];
 if (Convert.ToInt16(comboBoxJumlahPegawai.Text) == 4)
        {
            kdPegawai[0] =  Convert.ToInt16(comboBoxKdPegawai.Text) ;
        }

答案 2 :(得分:0)

如果要创建包含单个项目的数组,请尝试以下方法:

public int[] kdPegawai;
if (Convert.ToInt16(comboBoxJumlahPegawai.Text) == 4)
{
    kdPegawai = new int[] { Convert.ToInt16(comboBoxKdPegawai.Text) };
}

回想一下,kdPegawai[1] = ...意味着您正在尝试将某些内容分配给数组的第二项,(我假设)并不是您在此尝试做的事情。还记得数组的第二项是整数,而不是整数数组(因此错误)。

在大多数情况下,单项数组是没有意义的(除非您正在进行需要传递数组或类似内容的库调用)。如果它只是一个项目,请考虑使用int

或者,您可以提前初始化数组并执行以下操作:

kdPegawai[0] = Convert.ToInt16(comboBoxKdPegawai.Text);

重要说明: array[1]是数组中第二个项,不是第一项。数组中的第一项是array[0]

答案 3 :(得分:0)

错误消息足够清楚,它提醒您正在尝试将整数数组分配给整数变量。在这里我们可以看到kdPegawai是一个整数数组,因此有效索引处的任何值都是整数(kdPegawai[0]),并且您正在尝试将整数数组分配给导致错误的整数数组。为什么转换太多了?为什么不这样做呢?

public int[] kdPegawai;

int intPegawai = 0;
if (int.TryParse(comboBoxJumlahPegawai.Text, out intPegawai) &&  intPegawai == 4)
{
    kdPegawai = new int[] { intPegawai };
}

我仍然很困惑这里有什么需要数组,因为你正在处理单个值?为什么不继续intPegawai