【问题标题】:Variable in foreach loop does not exist outside the loopforeach 循环中的变量在循环外不存在
【发布时间】:2019-04-07 19:38:50
【问题描述】:

对不起,这是很基本的问题,但我一生都无法解决它:

我有这个:

public static IHtmlString HrefLangLinks(this PageData currentPage)
{
    var availablePageLanguages = currentPage.ExistingLanguages.Select(culture => culture.Name).ToArray();

    foreach (string listitem in availablePageLanguages)
    {
        var Output = string.Join(",", listitem);
    } 

    // Dictionary<String, String>
    return new HtmlString(Output.ToString());
}

我想得到在返回值中输出的foreach循环的结果。但是 Visual Studio 通知我当前上下文中不存在“输出”(我的返回值中的实例)。

我想我可以通过在我的 foreach 循环之外添加 var Output =""; 来解决这个问题,但这不起作用。

【问题讨论】:

  • 定义“那行不通”
  • 试试return new HtmlString(string.Join(",", availablePageLanguages))

标签: c#


【解决方案1】:

在进入 foreach 循环之前定义输出,然后为其赋值:

var Output = "";

foreach (string listitem in availablePageLanguages)
{
    Output = string.Join(",", listitem);
} 

除此之外,我想知道在这种情况下您是否真的需要一个 for 循环,因为如果 availablePageLanguages 是一个字符串数组 (string[]),您也应该能够立即执行此操作:

var Output = String.Join(" ", availablePageLanguages));

【讨论】:

  • 谢谢你。我没有注意 foreach 循环中创建变量的新实例的“var”,对吗?
  • 如果我没记错的话,这个解决方案将只包括 availablePageLanguages 中的最后一个列表项(因为每个列表项的输出都被覆盖)。我相信这就是 OP 所说的“不起作用”的意思。事实证明,我们都有相同的想法。我认为您的编辑是正确的解决方案。
猜你喜欢
  • 2012-03-29
  • 2012-11-11
  • 2023-04-06
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 2017-08-03
相关资源
最近更新 更多