if语句是否被视为迭代

时间:2014-11-21 20:40:35

标签: vb.net iteration

你好,我只是想知道是否'如果'声明可以被视为迭代。因为在满足某个条件之前使用迭代以允许代码继续。

4 个答案:

答案 0 :(得分:4)

迭代是循环的一个循环(一次)。 If块不是循环。

For块或While块是循环,并执行其中一个块的内容的一个循环 - For块或While块内的内容 - 是循环的一次迭代。如果For块或While块的整体是条件If块,那么If块可能是一次迭代......但不是因为它是{{{ 1}}阻止,但因为它是循环内部的东西。

答案 1 :(得分:2)

不,迭代是一些代码的重复。一旦不算作重复,否则所有代码都将被视为迭代。

答案 2 :(得分:2)

If语句本身不能被视为iteration。您可以根据需要多次运行包含if语句 的代码块,但这并不能使if语句成为迭代器本身

If语句与其他条件语句具有 某些 相似之处:

  • 选择案例
  • 尝试抓住

显式迭代器如下:

  • For / Next - For Each / Next
  • DO /循环
  • While / End While

但是,您有一些逻辑,可以将if语句的用法作为恢复或停止循环的条件,而不使用像For或While这样的直接循环语句。但是,如果语句是迭代器本身,那就不会转变,因为迭代是if语句和编程语言允许的特定逻辑的组合。

  1. 递归:

    Private Function ResumeIncrement(ByRef Number As Int32) As Boolean
        Number = Number + 1
        If Number < 10 Then
            Return ResumeIncrement(Number)
        Else
            Return False
        End If
    End Function
    
  2. GoTo声明:

    Private Sub TestGoTo()
        Dim Number As Int32 = 0
    IncrementMore:
        Number = Number + 1
        If Number < 10 Then
            GoTo IncrementMore
        End If
    End Sub
    
  3. 并且作为stated by Joel Coehoorn above,If块可以包含任何内容,包括由For,While或Do触发的迭代器块。如果您删除了包含的块,那么if部分应该做的事情不会发生任何变化:条件检查

    您也可以执行反向操作,并使用If块来控制迭代的行为方式。喜欢:

        If SomeCondition Then
            Exit For
            ' Or Exit While, etc. ie, using the 'Exit' statement
        End If
    

    i = 0
    Do
        i = i + 1
        ' ^^ capture i in Debug or Console
    
        ' Control the value of i...
        If i Mod 2 = 0 Then
            i = i - 2
        Else
            i = i * 3
        End If
    Loop While i < 30
    ' i = 1, 4, 3, 10, 9, 28, 27, [Exit Do with i = 81]
    

    在上面的两个例子中,If语句要么打破迭代,要么再试一次,那就是说&#34;控制迭代&#34; ,但绝不是,单独代表迭代器。

答案 3 :(得分:1)

这也是清除一个不确定性的另一个答案。你问过

  

if语句是否被视为迭代?

(你做了#34; if语句&#34;复数)然后你说

  

你好,我只是想知道是否&#39;如果&#39;声明可以考虑   作为迭代。因为 迭代一直使用   满足标准以允许代码继续。

(然后你把它变成了单数...... ???)&#34; ...迭代被用到......&#34; 应该自己独自回答你的问题,假设你和#39;重复迭代代码块(这是这里理解的方式)

但是如果您正在谈论迭代一些可能的值 直到符合您的要求,该怎么办?

    If MyValue = "" Then
        ' ...
    ElseIf MyValue.StartsWith("A") Then
        ' ...
    ElseIf MyValue.ToUpper = "TEST" Then
    ' ...
    Else
        ' ...
    End If

类似于:

    Select Case True
        Case MyValue = "":
            ' ...
        Case MyValue.StartsWith("A")

        ' blah blah blah
    End Select

    If MyValue = "" Then GoTo EmptyString
    If MyValue.StartsWith("A") Then GoTo StartsWithA
    If MyValue.ToUpper() = "TEST" Then GoTo IsTEST Else GoTo DoNothing
EmptyString:
    ' ...
    GoTo DoNothing
StartsWithA:
    ' ...
    GoTo DoNothing
IsTEST:
    ' ...
    GoTo DoNothing
DoNothing:
    ' Resume...

那不是迭代!这是按顺序处理的评估列表。当条件评估为True时,执行相关代码。与迭代不同,这只是选择正确的路径和恢复,而不是多次走同一条路径(循环)

是的,您正在遍历集合的可能值(条件状态)但是没有,您没有迭代If语句。您只检查 每个 单个结果如果测试一次