C# 通过二维锯齿数组的每个值发出循环;索引超出了数组的边界;

C# 通过二维锯齿数组的每个值发出循环;索引超出了数组的边界;,c#,arrays,for-loop,C#,Arrays,For Loop,我从一个文本文件生成了一个2D锯齿数组,数组是段落>句子,这个数组的格式正确,我可以在[0][0]等外部指定一个值,它将正确显示 但是,当我尝试在循环中执行此操作时,当我尝试显示“结果[0][0]”时,会得到“索引超出了数组的边界” 以下是阵列生成代码: string documentPath = @"I:\Project\Test Text.txt"; string content; string[][] results; protected void sentenceSplit() {

我从一个文本文件生成了一个2D锯齿数组,数组是段落>句子,这个数组的格式正确,我可以在[0][0]等外部指定一个值,它将正确显示

但是,当我尝试在循环中执行此操作时,当我尝试显示“结果[0][0]”时,会得到“索引超出了数组的边界”

以下是阵列生成代码:

string documentPath = @"I:\Project\Test Text.txt";
string content;
string[][] results;

protected void sentenceSplit()
{
    content = Regex.Replace(File.ReadAllText(documentPath), @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
    var paragraphs = content.Split(new char[] { '\n' });
    results = new string[paragraphs.Length][];
    for (int i = 0; i < results.Length; i++)
    {
        results[i] = Regex.Split(paragraphs[i], @"(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=\.|\?)\s");
    }
}
string documentPath=@“I:\Project\Test Text.txt”;
字符串内容;
字符串[][]结果;
受保护的void语句split()
{
content=Regex.Replace(File.ReadAllText(documentPath),@“^\s+$[\r\n]*”,“”,RegexOptions.Multiline);
var段落=content.Split(新字符[]{'\n'});
结果=新字符串[段落长度][];
for(int i=0;i结果[i]=Regex.Split(段落[i],@“(?正如我在评论中所说的,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取位于外部循环索引处的数组长度。如下所示:

for (int i = 0; i < results.Length; i++)
{
    // Get the length of the array that is at index i
    for (int s = 0; s < results[i].Length; s++)
    {
        TextboxSummary.Text += results[i][s];
    } 
} 
for(int i=0;i
正如我在评论中所说,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取外部循环索引处的数组长度。如下所示:

for (int i = 0; i < results.Length; i++)
{
    // Get the length of the array that is at index i
    for (int s = 0; s < results[i].Length; s++)
    {
        TextboxSummary.Text += results[i][s];
    } 
} 
for(int i=0;i
正如我在评论中所说,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取外部循环索引处的数组长度。如下所示:

for (int i = 0; i < results.Length; i++)
{
    // Get the length of the array that is at index i
    for (int s = 0; s < results[i].Length; s++)
    {
        TextboxSummary.Text += results[i][s];
    } 
} 
for(int i=0;i
正如我在评论中所说,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取外部循环索引处的数组长度。如下所示:

for (int i = 0; i < results.Length; i++)
{
    // Get the length of the array that is at index i
    for (int s = 0; s < results[i].Length; s++)
    {
        TextboxSummary.Text += results[i][s];
    } 
} 
for(int i=0;i
不是
结果。外部循环中的长度
结果。内部循环中的长度
引用同一对象?IIRC,
Length
将仅返回第一个维度的大小。我想您需要
结果[I].Length
在你的内环中。我们开始了,完全错过了,现在它指出我无法取消它谢谢你。不客气。有时候,只需要第二双眼睛,特别是如果你在同一段代码上停留了一段时间。不是
结果吗。Length
在你的外环中,而
结果。Length
在你的你的内循环引用同一个对象?IIRC,
Length
将只返回第一个维度的大小。我想你需要
results[I].Length
在你的内环中。我们开始了,完全错过了,现在它指出我无法取消它谢谢你。不客气。有时候,只需要第二双眼睛,特别是如果你在同一段代码上停留了一段时间。不是
结果吗。Length
在你的外环中,而
结果。Length
在你的你的内循环引用同一个对象?IIRC,
Length
将只返回第一个维度的大小。我想你需要
results[I].Length
在你的内环中。我们开始了,完全错过了,现在它指出我无法取消它谢谢你。不客气。有时候,只需要第二双眼睛,特别是如果你在同一段代码上停留了一段时间。不是
结果吗。Length
在你的外环中,而
结果。Length
在你的你的内循环引用同一个对象?IIRC,
Length
将只返回第一个维度的大小。我想你需要
results[I].Length
在你的内部循环中。砰,我们开始了,完全错过了,现在它指出我看不见它。谢谢。不客气。有时只需要再看一眼,特别是如果你在同一段代码上停留了一段时间。