Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 清理IDisposable问题_C#_Regex_Idisposable_Ienumerator_Dispose - Fatal编程技术网

C# 清理IDisposable问题

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

我试图调用这些函数来摆脱我不需要的东西,但我的代码似乎正在击败我,我开始觉得这是一场徒劳的斗争。我尝试了多种方法来解决最后两个错误,但IEnumerator给了我通配符。错误出现在以下行中: if(枚举数2可标识) 及 if(枚举数可标识)

试试看
{
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 = ...