【发布时间】:2023-04-07 22:37:01
【问题描述】:
我试图调用这些函数来摆脱我不需要的东西,但我的代码似乎在我开始认为是徒劳的斗争中打败了我。我尝试了多种方法来解决最后两个错误,但 IEnumerator 给了我通配符。错误在行: if (enumerator2 是 IDisposable) 和 if (枚举数是 IDisposable)
try
{
enumerator = matchs.GetEnumerator();
while (enumerator.MoveNext())
{
IEnumerator enumerator2;
Match current = (Match) enumerator.Current;
num = 0;
try
{
enumerator2 = current.Groups.GetEnumerator();
while (enumerator2.MoveNext())
{
Group group = (Group) enumerator2.Current;
strArray[num, num3] = group.Value;
num++;
}
}
finally
{
if (enumerator2 is IDisposable)
{
(enumerator2 as IDisposable).Dispose();
}
}
if (num2 < num3)
{
num2 = num3;
}
num3++;
}
}
finally
{
if (enumerator is IDisposable)
{
(enumerator as IDisposable).Dispose();
}
}
strArray[num, 0] = Conversions.ToString((int) (num2 + 1));
return strArray;
}
编辑-特定的错误消息:
使用未分配的局部变量“enumerator2”
使用未赋值的局部变量 'enumerator'
【问题讨论】:
-
您需要发布具体的错误信息
-
您是否有理由直接使用枚举器而不是使用更惯用的
foreach循环?另外,请查看using声明。 -
(enumerator2 as IDisposable).Dispose();行可能是个问题。它基本上意味着“如果它是一次性的,则在 enumerator2 上调用 Dispose。否则在 null 上调用 Dispose”。如果你使用正确的语法((IDisposable)enumerator2).Dispose(),你的工具会更快乐。 -
IEnumerator的泛型版本继承自IDisposable,所以它会让你的代码更简单。
标签: c# regex idisposable ienumerator dispose