【问题标题】:'Failed to cast object' System.String [] 'to type' System.IConvertible '.''无法转换对象' System.String [] '键入' System.IConvertible '。
【发布时间】:2022-01-16 00:49:34
【问题描述】:

我需要读取listBox中txt文件中的数字并将其转换为数字。但我得到一个错误--->'无法转换对象'System.String []'to type'System.IConvertible'。我能做些什么?我正在使用 C# windows 应用程序。 谢谢。

var lines = File.ReadAllLines("C:\\Numbers\\numbers.txt");

        for (int i = 0; i < lines.Length; i++)
        {
            var fields = lines[i].Split(' ');
            Convert.ToInt32(fields);
            listBox1.Items.Add(fields);
        }

【问题讨论】:

    标签: c# windows


    【解决方案1】:

    Split() 给你一个数组。您不能将整个数组转换为数字。使用循环遍历字段并将它们添加到列表框。

    另外,你需要使用Convert.ToInt32()的返回值(实际上,当你将它分配给一个列表框时,它会再次转换为字符串)。

    【讨论】:

    • 但是我需要得到这些数字的数组,并按顺序排列。这就是我使用 Split() 的原因。
    • 是的,我没有说你应该删除 Split()。我说“使用循环遍历字段”
    【解决方案2】:

    您无需将字符串转换为 int 即可将其添加到列表框项目,而您的做法是错误的。只需从您的代码中删除这一行

     Convert.ToInt32(fields);
    

    你的代码应该是

    List<string> items= new List<string>();
    for (int i = 0; i < lines.Length; i++)
    {
     var fields = lines[i].Split(' ');
     items.AddRange(fields);
    }
    ListBox1.Items.AddRange(items);
    

    【讨论】:

    • 我删除了它,但我在 listBox 的每一行都有一个“字符串 [] 数组”。
    • @Artur 我更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-09-07
    • 2017-04-09
    • 1970-01-01
    • 2011-12-13
    • 2015-12-17
    • 2012-03-14
    • 1970-01-01
    • 2020-12-17
    相关资源
    最近更新 更多