C# 清理IDisposable问题
我试图调用这些函数来摆脱我不需要的东西,但我的代码似乎正在击败我,我开始觉得这是一场徒劳的斗争。我尝试了多种方法来解决最后两个错误,但IEnumerator给了我通配符。错误出现在以下行中: if(枚举数2可标识) 及 if(枚举数可标识)C# 清理IDisposable问题,c#,regex,idisposable,ienumerator,dispose,C#,Regex,Idisposable,Ienumerator,Dispose,我试图调用这些函数来摆脱我不需要的东西,但我的代码似乎正在击败我,我开始觉得这是一场徒劳的斗争。我尝试了多种方法来解决最后两个错误,但IEnumerator给了我通配符。错误出现在以下行中: if(枚举数2可标识) 及 if(枚举数可标识) 试试看 { enumerator=matchs.GetEnumerator(); while(枚举数.MoveNext()) { IEnumerator枚举器2; 匹配当前=(匹配)枚举数。当前; num=0; 尝试 { enumerator2=curren
试试看
{
enumerator=matchs.GetEnumerator();
while(枚举数.MoveNext())
{
IEnumerator枚举器2;
匹配当前=(匹配)枚举数。当前;
num=0;
尝试
{
enumerator2=current.Groups.GetEnumerator();
while(枚举数2.MoveNext())
{
组组=(组)枚举器2.Current;
strArray[num,num3]=组值;
num++;
}
}
最后
{
if(枚举数2可标识)
{
(枚举数2作为IDisposable).Dispose();
}
}
如果(num2
编辑特定的错误消息:
使用未分配的局部变量“enumerator2”使用未分配的局部变量“枚举器”使用for each循环而不是while循环。如果需要,它将为您呼叫Dispose
您应该像其他人指出的那样使用
foreach
循环
但是,出现该错误的原因是,当在finally
块中使用枚举数2
时,编译器无法知道它被设置为某个值(因为它可能不在某些异常情况下)。您可以按原样修复代码,方法是:
IEnumerator enumerator2 = null;
Match current = ...
您需要发布特定的错误消息,这是您直接使用枚举数而不是使用更惯用的
foreach
循环的原因吗?另外,使用语句查看代码>可能是个问题。它的基本意思是“如果枚举数2是一次性的,则调用它的Dispose,否则调用null的Dispose”。如果您使用正确的语法,((IDisposable)Enumerator 2).Dispose()
,您的工具将更快乐。IEnumerator
的通用版本继承自IDisposable
,因此它将使您的代码更简单。这正是我需要回答这个问题的答案,即使这不是最有效的方法,泰。
IEnumerator enumerator2 = null;
Match current = ...