检查数组列表的大小

本文关键字:列表 数组 检查 | 更新日期: 2023-09-27 18:33:08

我有一个字符串数组列表:

List<string[]> parsedRaw = new List<string[]>();

此列表包含从 CSV 读入的行,其中 parsedRaw[3][5] 将是从 CSV 第三行读出的第五个项目。

我知道我可以通过以下方式找到列表中的行数:

parsedRaw.Count

但是,给定一行,我如何找到该行中的元素数? 我正在尝试在进入循环以从列表中读取之前实现测试,以避免"索引超出数组范围"错误,其中循环为:

for (k = 0; k < nBytes; k++)
{
    TheseBytes[k] = (byte)parsedRaw[i][StartInt + k];
}

我在 CSV 中的一行中遇到错误,该行的元素比其他行少。 在进入这个循环之前,我需要检查parsedRaw[i]是否至少有"StartInt + nBytes"元素。

感谢您的任何建议!

检查数组列表的大小

一行只是一个字符串数组string[],所以你可以使用数组的 Length 属性找到它的大小。

foreach (string[] row in parsedRaw) {
    for (int i = 0 ; i != row.Length ; i++) {
        // do something with row[i]
    }
}

给定行中的元素数由下式确定

parsedRaw[theRowIndex].Length

要修复 for 循环,您需要将StartInt + k值限制为小于 nBytes 的最小值和行长度

for (k = 0; (k < nBytes) && (k + StartInt < parsedRaw[i].Length); k++)
{
    TheseBytes[k] = (byte)parsedRaw[i][StartInt + k];
}

尝试

List<string[]> parsedRaw = new List<string[]>();
parsedRaw.Add(new string[] {"test1", "test2"});
parsedRaw.Add(new string[] { "test1", "test2", "test3" });
int totalSize = 0;
for (int i = 0; i < parsedRaw.Count(); i++)
{
    int rowSize = 0;
    for (int k = 0; k < parsedRaw[i].Count(); k++)
    {
        rowSize += parsedRaw[i][k].Length;    
    }                
    totalSize += rowSize;
}