no-op-对于vb.net来说,什么是好的no-op操作



我们可以设置断点,同时确保它不会做任何其他事情。

在c中,这将是while(false(;

在vb.net中做什么?

如果你总是需要它来打破它,你可以放StopDebugger.Break()

如果你真的出于某种原因想要一个无操作(这会变成一场争夺最无效的单行代码的比赛吗?!(,这些怎么样?

System.Threading.Thread.Sleep(1)-1ms不太可能在环路之外产生巨大影响

Debug.Write("")-似乎没有输出任何内容。

这是一个合法的用例。如果在感兴趣的语句之后需要一个临时断点,并且这是if语句中的最后一行,则需要额外的无操作类型语句来放置临时断点。在这种情况下,我使用:

If someCondition >0 Then
    doSomething
    Space (1)    'Dummy line to place breakpoint
End If

这会返回一个包含一个空格的字符串,但不会将其分配给任何内容。我在VBA中使用它,但.net 也支持它

我的两分钱。。。

您可以使用冒号将任何一系列命令组合到一行:

If False Then : End If
Select Case False : Case Else : End Select

我还把它做成了一个潜艇。然后它有了自己的一个可识别的名字:

'Definition...
Public Sub noop () 'Or Private, Protected, etc.
End Sub
'Usage...
Sub Main()
    If sometest Then
        noop
    Else
        MsgBox "test is false"
    End If
End Sub

非常奇怪的问题,您可以在代码中的任何位置放置断点。但这里有一些无用的线路:

 Do While False
 Loop
 While False
 End While

甚至以下内容:

 Dim hello = Nothing

或者这个:

 Format("", "")

no-op语句也有助于很好地记录代码并使其更易于理解。例如,你可以输入一个类似a=a.的语句

例如:

如果MyNumber=>100,则A=A
其他:

我知道这是一个旧查询,但就其价值而言,我对原始问题的首选解决方案是Debug.Assert (vbTrue)

如果您愿意,您可以使用一个变量而不是vbTrue,然后通过更改一个变量来启用/禁用代码中的所有断点

Dim bDisableBreakpoints as Boolean: bDisableBreakpoints = vbTrue
'your code here
Debug.Assert (bDisableBreakpoints)
'rest of your code

只需将bDisableBreakpoints更改为vbFalse,断点就会设置在您使用Debug.Assert 的任何位置

我个人最喜欢的是

dim b=1

然后我在那里放了一个断点。

相关内容

  • 没有找到相关文章

最新更新