【问题标题】:Making a mulitdimensional jagged array制作多维锯齿数组
【发布时间】:2014-06-10 14:49:31
【问题描述】:

我想制作一个动态数组的动态数组,我该怎么做? 我已经尝试过使用AddRange() 方法的列表列表。 我也尝试过遍历数组。

也许展示我正在尝试做的事情更有意义。我无法让它工作:

String[] lines = System.IO.File.ReadAllLines(fileName);
String[] linesArr;
String[][] MultiArr;
int i = 0;

foreach (string line in lines)
{
    if (line.Contains("EFIX"))
    {
        linesArr = line.Split(delimiterChars);
        for (int x = 0; x < linesArr.Length; x++)
        {
            MultiArr[i][x] = linesArr[x];
        }
    Console.WriteLine(fixationsData[i]);
    i++;
    }
}

【问题讨论】:

  • 使用列表列表有什么问题?
  • 您尝试中的“出了什么问题”对试图帮助您的人非常有用。
  • 看起来你没有给MultiArr[i]分配任何东西,所以它仍然是null,所以MultiArr[i][x] = ...实际上是null[x] = ...。哦,MultiArr 本身仍然是 null,除非你在某处将其分配为“屏幕”。

标签: c# arrays jagged-arrays


【解决方案1】:

LINQ 使这变得非常简单。

string[][] data = File.ReadLines(filename)
    .Where(line => line.Contains("EFIX"))
    .Select(line => line.Split(delimiterChars))
    .ToArray();//omit this last call to allow the data to be streamed, 
    //greatly removing the memory footprint of the application at no real 
    //additional cost, assuming you have no compelling reason to eagerly 
    //load the whole file into memory.

foreach(var line in data)
    Console.WriteLine(line);

【讨论】:

  • 它似乎工作除了输出线,因为我得到 System.String[] 但我需要里面的字符串。我添加了另一个 foreach 来适应这个 :-) 谢谢!
【解决方案2】:

使用字符串列表应该可以正常工作。这是我要写的。

var lines = System.IO.File.ReadAllLines(fileName);
var multiArr = new List<List<string>>();
var i = 0;

foreach (var line in lines.Where(line => line.Contains("EFIX")))
{
    multiArr.Add(line.Split(delimiterChars).ToList());
    Console.WriteLine(fixationsData[i]);
    i++;
}

【讨论】:

    【解决方案3】:
    String[] lines = System.IO.File.ReadAllLines(fileName);
    String[] linesArr;
    List<String[]> MultiArr = new List<String[]>();
    
    
    foreach (string line in lines)
    {
        if (line.Contains("EFIX"))
        {
        linesArr = line.Split(delimiterChars);
        MultiArr.Add(linesArr);
        Console.WriteLine(fixationsData[i]);
        }
     } 
    

    这是一个字符串数组列表。这就是你要找的。​​p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2013-11-12
      • 2018-11-04
      相关资源
      最近更新 更多