【问题标题】:C# Cannot convert from string [] to stringC# 无法从字符串 [] 转换为字符串
【发布时间】:2011-03-19 00:33:43
【问题描述】:

我有这个方法并在 words.Add(rows); 行上得到上述错误。谁能帮忙?谢谢 - 本

private static IEnumerable<string> LoadWords(String filePath)
    {

        List<String> words = new List<String>();

        try
        {
            foreach (String line in File.ReadAllLines(filePath))
            {
                string[] rows = line.Split(',');

                words.Add(rows);
            }

        }
        catch (Exception e)
        {
            System.Windows.MessageBox.Show(e.Message);
        }

            return words;
    }

【问题讨论】:

  • 供您参考,here Eric Lippert 解释了为什么 AddAddRange 是独立的函数是有意义的。 Here LBushkin 更详细地介绍了使这一选择成为必要的技术限制。不过,如果没有这些技术限制,拥有两个独立的功能仍然是一个好主意。

标签: c#


【解决方案1】:

代替

words.Add(rows);

使用这个:

words.AddRange(rows);

rows是一个包含多个字符串的字符串数组,所以你必须用AddRange()添加它们。

【讨论】:

    【解决方案2】:

    改成这个

    words.AddRange(rows);
    

    您的问题是您要添加一个项目数组,而不是单个元素。

    在添加实现 System.Collections.Generic.IEnumerable&lt;T&gt; 的集合时使用 AddRange()

    在此处查看文档http://msdn.microsoft.com/en-us/library/z883w3dc.aspx

    【讨论】:

      【解决方案3】:

      您正在尝试将字符串数组添加到采用字符串的列表中。

      试试words.AddRange(rows);

      【讨论】:

        【解决方案4】:

        你试图在数组列表中添加数组字符串

        private static IEnumerable<string> LoadWords(String filePath)
            {
        
                List<String> words = new List<String>();
        
                try
                {
                    foreach (String line in File.ReadAllLines(filePath))
                    {
                        string[] rows = line.Split(',');
        
                        foreach(string str in rows)
                               words.Add(str);
                    }
        
                }
                catch (Exception e)
                {
                    System.Windows.MessageBox.Show(e.Message);
                }
        
                    return words;
            }
        

        【讨论】:

          【解决方案5】:

          您使用了错误的方法。您需要 AddRange 方法。

          words.AddRange(rows);
          

          【讨论】:

            【解决方案6】:

            试试这个:

            words.AddRange(rows);
            

            【讨论】:

              【解决方案7】:

              .Add 将采用另一个字符串,而不是字符串数组。

              改用.AddRange

              【讨论】:

                【解决方案8】:
                private static IEnumerable<string> LoadWords(String filePath)
                {
                
                    List<String> words = new List<String>();
                
                    try
                    {
                        foreach (String line in File.ReadAllLines(filePath))
                        {
                            string[] rows = line.Split(',');
                
                            foreach (String word in rows)
                            {
                                words.Add(word);
                            }
                        }
                
                    }
                    catch (Exception e)
                    {
                        System.Windows.MessageBox.Show(e.Message);
                    }
                
                        return words;
                }
                

                【讨论】:

                • +0:这会起作用,但只是调用AddRangeforeach 更干净。
                • 我同意,但是如果 OP 需要查看排除某些单词的方法,这将让他看到在插入之前在哪里添加一段代码进行测试。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-09-19
                • 1970-01-01
                • 2019-05-11
                • 1970-01-01
                相关资源
                最近更新 更多