C# 如何检查列表长度是否大于上次?
我有以下代码:C# 如何检查列表长度是否大于上次?,c#,C#,我有以下代码: int LRLength = LR.Count; for (int i = 0; i < LR.Count; i++) { LRLength = LR.Count; LR = merge(LR); if (LR.Count < LRLength) { LR
int LRLength = LR.Count;
for (int i = 0; i < LR.Count; i++)
{
LRLength = LR.Count;
LR = merge(LR);
if (LR.Count < LRLength)
{
LR = merge(LR);
if (LR.Count == LRLength)
{
break;
}
}
}
int lrllength=LR.Count;
对于(int i=0;i
这是函数merge:
private List<Lightnings_Extractor.Lightnings_Region> merge(List<Lightnings_Extractor.Lightnings_Region> Merged)
{
List<Lightnings_Extractor.Lightnings_Region> NewMerged = new List<Lightnings_Extractor.Lightnings_Region>();
Lightnings_Extractor.Lightnings_Region reg;
int dealtWith = -1;
for (int i = 0; i < Merged.Count; i++)
{
if (i != dealtWith)
{
reg = new Lightnings_Extractor.Lightnings_Region();
if (i < Merged.Count - 1)
{
if (Merged[i].end + 1 >= Merged[i + 1].start)
{
reg.start = Merged[i].start;
reg.end = Merged[i + 1].end;
NewMerged.Add(reg);
dealtWith = i + 1;
}
else
{
reg.start = Merged[i].start;
reg.end = Merged[i].end;
NewMerged.Add(reg);
}
}
else
{
reg.start = Merged[i].start;
reg.end = Merged[i].end;
NewMerged.Add(reg);
}
}
}
return NewMerged;
}
私有列表合并(列表合并)
{
List NewMerged=新列表();
Lightings\u提取器。Lightings\u区域注册;
int dealtWith=-1;
for(int i=0;i=合并[i+1].start)
{
reg.start=Merged[i]。开始;
reg.end=Merged[i+1]。结束;
新增(注册号);
dealtWith=i+1;
}
其他的
{
reg.start=Merged[i]。开始;
reg.end=Merged[i].end;
新增(注册号);
}
}
其他的
{
reg.start=Merged[i]。开始;
reg.end=Merged[i].end;
新增(注册号);
}
}
}
返回新合并;
}
在这个类中:lightings\u Extractor.lightings\u Region我只有两个int变量。
此函数的思想是获取一个列表并合并一致的区域
例如,一旦我调用该函数,列表LR长度为8,现在我将返回更少。例如,如果需要将两个索引合并为一个索引,那么返回的列表长度将为7。如果需要合并另一个索引,则长度将为6,依此类推
在上面的第一段代码中,我要检查的是何时停止调用函数来合并索引
如果长度为8,下一次仍然为8,则不执行任何操作以停止循环。
如果长度为8,下次为7,则再次调用该函数。
如果长度为7,则停止循环。但是如果长度是6,请继续再次调用它
直到最后的长度将与之前的长度相同
所以我尝试了这个代码,但效果不好:
int LRLength = LR.Count;
for (int i = 0; i < LR.Count; i++)
{
LRLength = LR.Count;
LR = merge(LR);
if (LR.Count < LRLength)
{
LR = merge(LR);
if (LR.Count == LRLength)
{
break;
}
}
}
int lrllength=LR.Count;
对于(int i=0;i
试着对你想要完成的事情做出一些假设。下面将基本上捕获列表的原始长度以进行比较。它将至少运行一次,并一直运行,直到LRLength==LR.Count
int LRLength = LR.Count;
do{
LR = merge(LR);
} while(LR.Count != LRLength);
如果您试图运行循环,直到连续两次获得相同的计数:
int prevCount;
do{
prevCount = LR.Count;
LR = merge(LR);
} while(prevCount != LR.Count);
很抱歉,这真的很让人困惑,请尝试解决这个问题。好的,我将用更多信息编辑我的问题。如果我们知道Merge()的作用,可能会有所帮助。我刚才用merge()更新了我的问题,并试图解释我应该做什么/get。等等,你想循环直到它计数==原始计数吗?还是要循环,直到连续两次获得相同的计数??