0

for & while ループで list> 内のリストに文字列オブジェクトを追加しようとしており、使用したいリスト オブジェクトとして var i を使用しようとしています。

ここにクラスのコードがあります。私が間違っていることについての助けは大歓迎です:)

public class GenClass
{

    private static int _genCount;
    private static bool _filesLoadedToLists;
    private static List<string> _nounSetOne = new List<string>();
    private static List<string> _nounSetTwo = new List<string>();
    private static List<List<string>> _toLoad = new List<List<string>>();

    private string _emotionMidTrim = "";

    public const string FileOne = "NounSetOne.txt";
    public const string FileTwo = "NounSetTwo.txt";

    public GenClass()
    {
        while (_filesLoadedToLists == false)
        {
            TextToList(FileOne,FileTwo);
            _filesLoadedToLists = true;
        }

        _genCount++;
    }

問題はクラスのこの部分にあります

    public void TextToList(string fileOne, string fileTwo)
    {
        List<string> filesToRead = new List<string>();

        filesToRead.Add(fileOne); // Add the text files to read to a list
        filesToRead.Add(fileTwo); // Add the text files to read to a list

        _toLoad.Add(_nounSetOne); // Add a list of words to this list
        _toLoad.Add(_nounSetTwo); // Add a list of words to this list

        for (int i = 0; i <= filesToRead.Count; i++)
        {
             using (var reader = new StreamReader(filesToRead[i]))
             {
                 string line;
                 while ((line = reader.ReadLine()) != null)
                 {
                     _toLoad[i.Add(line)]; // the error is here
                 }
             }
        }
4

4 に答える 4

0
for (int i = 0; i <= filesToRead.Count; i++)
    {
         using (var reader = new StreamReader(filesToRead[i]))
         {
             string line;
             while ((line = reader.ReadLine()) != null)
             {
                 _toLoad[i].Add(line);
             }
         }
    }
于 2013-08-20T01:46:24.207 に答える
0

あなたは正しいです、エラーで、あなたはそれを理解する必要があります

List<List<string>>List<string>と NOT A 文字列を取ります。

このようなことを試してください。

List<string> listOfString = new List<string>;
for (int i = 0; i <= filesToRead.Count; i++)
{
      using (var reader = new StreamReader(filesToRead[i]))
      {
           string line;
           while ((line = reader.ReadLine()) != null)
           {
             listOfString.add(line);
           }
      }
}

それで、

_toLoad.add(listOfStrings);
于 2013-08-19T21:34:49.940 に答える
0

File.ReadAllLines() を使用してみてください。for ループを次のように置き換えます。

foreach(var file in filesToRead) {
  _toLoad.Add(File.ReadAllLines(file).ToList());
}
于 2013-08-19T21:36:40.613 に答える
0

LINQ を使用すると、これを大幅に削減できます。

List<string> filesToRead = new List<string> {"NounSetOne.txt", "NounSetTwo.txt"};
List<List<string>> _toLoad = new List<List<string>>();
_toLoad.AddRange(filesToRead.Select(f => File.ReadAllLines (f).ToList() ));

ファイル名に不要な変数がないことに注意してください (リストに追加することが唯一の目的であるのに、なぜ FileOne/FileTwo があるのでしょうか?) List<string>

于 2013-08-19T21:51:23.617 に答える