【问题标题】:VB.NET Combination of For Each..Next and Do..WhileFor Each..Next 和 Do..While 的 VB.NET 组合
【发布时间】:2011-07-19 18:40:06
【问题描述】:

我有一个这样的数组:

Dim classes() as String = {"FR%", "SO", "JR", "SR", "SR5"}

我需要像这样遍历这些值:

For Each value as String in classes

Next

问题是,我在这个 For Each..Next 中有一个 If..Then..Else 子句,它说明了以下内容:

If actual_class = value Then
  txt.Text = "Welcome"
Else
  txt.Text = "Goodbye"

当我运行它时,除非个人是字符串数组(“SR5”)中的最后一个值,否则他们将收到消息“再见”......所以,我需要以某种方式遍历每个值,例如使用 For Each..Next 循环完成,但一旦到达学生的班级,也会跳出循环,例如 Do..While 循环 - 这样它们的值就不会被 Else 子句超出。

【问题讨论】:

    标签: asp.net vb.net loops foreach while-loop


    【解决方案1】:

    当您想跳出循环时,请执行Exit For

    For EachExit

    更新示例

    txt.Text = "Goodbye"
    
    For Each value as String in classes
        If actual_class = value Then
            txt.Text = "Welcome"
            Exit For
        End If
    Next
    

    【讨论】:

    • 谢谢,这很有帮助。不幸的是,它似乎不起作用。我仍然总是收到第二条消息。是否有可能在 If..Then 中放置一个 Exit For 会导致 Exit For 不起作用?似乎 Exit For 从未被执行。
    • 是的,您可以在 If 中使用 Exit For,因此如果您想在设置 txt.Text = "Welcome" 后停止处理,请在该语句之后放置 Exit For
    • 你有没有试过调试这个过程,看看程序的实际流程是怎样的?如果你还没有,现在就这样做。
    • 我有,但我什么也没看到。我将两个变量进行比较 current_value 和 value 设置为字符串,我可以看到它们在调试期间是等效的。
    • @davemackey 听起来你循环之外的其他东西正在更新结果变量,或者循环被再次调用并覆盖原始结果。
    【解决方案2】:
    txt.Text = ""
    
    For Each value as String in classes
        If actual_class = value Then
            txt.Text = "Welcome"
        Else
            txt.Text = "Goodbye"
        End If
    Next
    

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 2011-05-20
      • 1970-01-01
      • 2018-09-18
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      相关资源
      最近更新 更多