foreach语句中都需要类型和标识符

时间:2013-12-20 10:53:42

标签: c# vb.net

我在VB.NET中有一个Active Directory搜索器,我正在转换为C#.NET并且收到上述错误。

我查看了this帖子,这是完全相同的错误,但是在不同的情况下。通过阅读链接的帖子,似乎错误是由于没有指定你试图循环的数据类型引起的......我无法锻炼的是我的搜索者,我实际应该指定哪种数据类型!

以下是目前存在错误的代码;

foreach (Result in SearcherResults)
    {
        OnResultFound(new ResultFoundEventArgs(Result));
        ResultCount += 1;
    }

我试过了;

foreach (var Result in SearcherResults)

正如另一篇文章中所建议的那样,我也尝试过了;

foreach (SearchResult Result in SearcherResults)

认为结果被定义为SearchResult类型,这可能有效,但这两个尝试都错误

"A local variable named 'Result' cannot be declared in this scope because it would give a different meaning to 'Result', which is already used in a 'parent or current' scope to denote something else"

我想我错过了一些非常明显的东西,但如果有人有任何建议我会非常感激。

2 个答案:

答案 0 :(得分:2)

正如此错误所述:

  

名为'结果'的局部变量不能在此范围内声明,因为它会给“结果”赋予不同的含义,这已经在父母或当前的“父母”中使用过。范围表示别的东西"

您在其他地方定义了名为Result的变量。只需更改其名称:

foreach (var searcherResult in SearcherResults)
{
    OnResultFound(new ResultFoundEventArgs(searcherResult));
    ResultCount += 1;
}

答案 1 :(得分:0)

  

认为结果被定义为SearchResult类型,这可能有效,但这两个尝试都错误

这让我觉得您在foreach循环之前实际定义了Result

实际上,您在的foreach循环中定义了

错:

SearcherResult Result;
foreach (SearcherResult Result in SearcherResults) 
{
    ...
}

编译器会将两个Result定义看作两个具有相同名称的独立变量,因此会出错。

正确:

foreach (SearcherResult Result in SearcherResults) 
{
    ...
}

在定义foreach循环时定义变量Result。