【问题标题】:How to get functions to not evaluate the return until the end如何让函数直到最后才评估回报
【发布时间】:2012-01-09 04:01:45
【问题描述】:

我的程序中有函数在到达返回行后停止,但我需要函数继续运行,以防我希望函数返回更改。

是否有解决方法或强制函数在返回后继续执行的方法?

我制作了一个测试程序来演示这个问题。它是一个仅包含一个按钮的表单。

这里是源代码:

Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
    If testFunction() = True Then
        MsgBox("It returned True!")
    Else
        MsgBox("It returned False!")
    End If
End Sub

Function testFunction() As Boolean
    Dim testVariable As Boolean = True
    Return False
    If testVariable = True Then
        Return True
    End If
End Function

消息框总是显示“它返回 False”,如果它继续按照我想要的方式处理代码,它会返回 true。

【问题讨论】:

  • 在 testFunction() 函数中声明 testVariable 变量后返回 false 。这就是它总是返回 false。你必须更改该序列
  • 你误解了我的问题。我是故意这样做的。我想要一种方法让它继续追随Return False

标签: vb.net function return


【解决方案1】:

您已经设置了一个标志变量,所以使用它!

Function testFunction() As Boolean
    Dim testVariable As Boolean = True
    testVariable = False

    Return testVariable
End Function

另外,不要永远在比较中使用= True= False= True 是 100% 冗余的,x = False 应该是 Not x


编辑:抱歉,不清楚。

If x = True Then
    ' ...
End If

总是*

一样
If x Then
    ' ...
End If

【讨论】:

  • 不,我的问题只是我希望代码在返回行之后继续。该变量存在的唯一原因是为了证明代码在第一个返回行之后没有继续。另外,如果我不应该使用 = True= False 那么我应该使用什么?
  • @MarkKramer:好的……所以再做一个标志。 Return 的重点是(你猜对了!)它从函数返回。至于用什么替换= True...什么都没有!把它拿出来,看看你的代码免费运行。
  • 那么当你声明一个布尔变量时,它默认是真的吗?
  • 哦,好吧。那么,有什么真正的理由使用xNot x 代替x = Truex = False?它是让代码更有效率还是只是您的个人喜好?
  • @MarkKramer:嗯,绝对有理由不使用x = True。编译器有时可以对其进行优化,但它会使代码稍微混乱一些。当运算符= 为具有Boolean 的类重载时,您确实会遇到问题。没有人应该这样做,但仍然......至于Not x,它并不那么重要,但它更短并且暗示你的意图更好一点。当然,也出于运算符重载的原因。
【解决方案2】:
Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
    If testFunction() Then
        MsgBox("It returned True!")
    Else
        MsgBox("It returned False!")
    End If
End Sub  

Function testFunction() As Boolean
  Dim testVariable As Boolean = True
    If testVariable Then
        Return True
    End If
    Return False
End Function

【讨论】:

    【解决方案3】:

    你也可以这样做:

    Function testFunction() As Boolean
      Dim testVariable As Boolean = True
      Return testVariable
    End Function
    

    因为 testVariable 是一个布尔值并且返回类型是布尔值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多