0

您好,我需要从字符串列表中获取字符串项目并将其添加到我尝试这样的 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);

        }
4

4 回答 4

2

看看这个声明:

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

dvouRozmernePole数组数组也是如此。现在看这里:

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

您正在尝试为 分配一个intdvouRozmernePole[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<T>几乎肯定会更简单。

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

int[] numbers = AgentNumbers.Select(x => int.Parse(x)).ToArray();
int[] rides = AgentRide.Select(x => int.Parse(x)).ToArray();
int[][] dvouRozmernePole = { numbers, rides };
于 2012-12-30T21:44:07.467 回答
0

错误很明显。在声明中

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

您将整数分配给数组。

于 2012-12-30T21:43:36.280 回答
0

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()
};

初始化数组。

于 2012-12-30T21:43:55.313 回答
0

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);

    }
于 2012-12-30T21:44:30.667 回答