C# 检查数组列表的大小

C# 检查数组列表的大小,c#,list,indexoutofboundsexception,C#,List,Indexoutofboundsexception,我有一个字符串数组列表: List<string[]> parsedRaw = new List<string[]>(); 但是,给定一行,如何才能找到该行中的元素数?我试图在进入从列表读取的循环之前实现一个测试,以避免出现“索引超出数组边界”错误,其中循环是: for (k = 0; k < nBytes; k++) { TheseBytes[k] = (byte)parsedRaw[i][StartInt + k]; } for(k=0;k

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

List<string[]> parsedRaw = new List<string[]>();
但是,给定一行,如何才能找到该行中的元素数?我试图在进入从列表读取的循环之前实现一个测试,以避免出现“索引超出数组边界”错误,其中循环是:

for (k = 0; k < nBytes; k++)
{
    TheseBytes[k] = (byte)parsedRaw[i][StartInt + k];
}
for(k=0;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
值限制为小于
n字节的最小值和行长度

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

List parsedRaw=new List();
Add(新字符串[]{“test1”,“test2”});
Add(新字符串[]{“test1”、“test2”、“test3”});
int totalSize=0;
for(int i=0;i
您尝试过使用lambda表达式吗?实际上,parsedRaw[3][5]将是第4行的第6项。通过添加以下if语句作为输入for循环的先决条件,我可以使用Length属性获得解决方案:“if(parsedRaw[I].Length>=(StartInt+nBytes))”感谢您指出长度属性。这是一个很有帮助的建议,但看起来您从中删除了N字节。这个循环会一直读到行的末尾,但每次遇到这个循环时,我只需要抽出N字节的元素。@Patrigon my bad,错误地加了回去,现在我认为这是一个比将for循环嵌套在if循环中更好看的解决方案。再次感谢。是的,看起来parsedRaw[i].Count()返回的值与parsedRaw[i].Length相同。这对我来说也很有用。
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;
}