C#交错数组中的行数是否必须预先计数?
我在包括一篇文章在内的几篇文章中读到了关于jagged(数组的数组)的内容 我正在将.csv文件读入内存。我的问题是,我是否必须事先知道.csv文件中的行数,或者我可以只为数组分配一个新行 从人们的例子来看,我认为这是不可能的 我当前的代码(如下)运行良好。我只是想知道是否有一种方法可以在不计算行数的情况下插入新数组C#交错数组中的行数是否必须预先计数?,c#,multidimensional-array,C#,Multidimensional Array,我在包括一篇文章在内的几篇文章中读到了关于jagged(数组的数组)的内容 我正在将.csv文件读入内存。我的问题是,我是否必须事先知道.csv文件中的行数,或者我可以只为数组分配一个新行 从人们的例子来看,我认为这是不可能的 我当前的代码(如下)运行良好。我只是想知道是否有一种方法可以在不计算行数的情况下插入新数组 public int map_csv() { // cmn 4/26/2016 Don't even bother to try anything with an empt
public int map_csv()
{
// cmn 4/26/2016 Don't even bother to try anything with an empty string.
if (0 == m_ret_code)
{
try
{
using (TextFieldParser parser = new TextFieldParser(m_csv_path))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
m_row_count = 0;
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
m_row_count++;
}
}
m_csv_array = new string[m_row_count][];
m_row_idx = 0;
using (TextFieldParser parser = new TextFieldParser(m_csv_path))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
if (!parser.EndOfData)
{
m_column_headings = parser.ReadFields();
m_csv_array[m_row_idx] = new string[m_column_headings.Length];
m_csv_array[m_row_idx] = m_column_headings;
m_row_idx++;
}
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
m_csv_array[m_row_idx] = new string[fields.Length];
m_csv_array[m_row_idx] = fields;
}
}
}
catch (Exception e)
{
m_exception_msg = e.Message;
m_ret_code = 1;
}
}
使用
列表
而不是数组作为“外部”集合,因此您可以使用其Add方法将新字符串[]分配给新行。您需要的列表
。您可以继续添加string[]
,而无需担心其大小
或者,如果您决定保留您的
字符串[]【】【】
,您只需读取文件内容并自行拆分即可:
m_csv_array = File.ReadAllLines(m_csv_path)
.Select(x => x.Split(',').ToArray())
.ToArray()
为什么没有一个
列表
?没有理由我不能这样做。谢谢