为什么不使用F11逐步执行vb代码?

问题描述

| 我是vb新手。当我开始在vb.net 2010中处理这个新项目时,我投入了许多断点来尝试了解项目的执行顺序,但徒劳无功。 根据进入属性/功能(F11)的预期操作,进入命令F11应该正常工作。但是当我按F11键时,我发现代码是基于断点而不是逐行或一步一步地从一个地方跳到另一个地方。 举个例子,请看下面的代码
    Me.tcData.Alignment = TabStrip.TabControl.TabAlignment.Bottom   \'line 1-breakpoint
    Me.tcData.Dock = System.Windows.Forms.DockStyle.Fill            \'line 2
    ...
    Me.tcData.TabsDirection = TabStrip.TabControl.FlowDirection.LeftToRight  \'line 3

Public Property Alignment() As TabAlignment           \'The property 1 called by line 1
    Get
        Return m_Alignment
    End Get
    Set(ByVal value As TabAlignment)
        m_Alignment = value
        AdjustHeight()
        PositionButtons()
        For Each t As TabPage In TabPages
            t.Alignment = value
        Next
    End Set
End Property


Public Property TabsDirection() As FlowDirection \'The property 3 -breakpoint
    Get
        Return m_TabsDirection
    End Get
    Set(ByVal value As FlowDirection)
        m_TabsDirection = value
        SelectItem(Nothing)
    End Set
End Property
当我在第1行按F11键时,它将转到属性1。在返回时,当我按F11键时,它将直接转到属性3,而无需访问第2行和第3行中的代码。 我不明白为什么不使用F11一步一步执行代码。如果我将breakpoingts放在第2行中,那么将执行第2行。 所以在我看来,显示的执行顺序是基于断点的!因此,如果我在不同位置放置断点,则显示的执行顺序将有所不同!因此,我不可能真正了解执行顺序。 谢谢!     

解决方法

        当您将其告知
Step Into
时,它将遵循确切的代码路径。因此,为了计算第一行中的
TabStrip.TabControl.TabAlignment.Bottom
,它首先必须引用
TabStrip
,然后查找
TabControl
属性,然后查找
TabAlignment
属性,然后-在这里跳转到属性1标签,对吗?那是因为它必须为代码中的
TabAlignment
属性执行
Get
部分。一旦执行,它便知道引用是什么,因此将其返回到先前的执行级别,此时可以查找
Bottom
属性。现在,可以将值分配给“ 9”属性。 第3行的用法相同:为了知道将ѭ10分配给的位置,它必须评估
Me.tcData.TabsDirection
属性,这涉及在
TabsDirection
属性的
Get
部分中执行代码。 因此,简而言之,您将看到代码遵循的确切执行路径,包括必须同时计算“ source”和“ destination \”属性的所有“子评估”。根据调试器的配置,它可能不会在系统代码中显示出来,但是如果将调试器设置为尽可能详细,则它将为您引用的每个属性(包括系统代码)跳转到
Get
定义。对于
System.Windows.Forms.DockStyle.Fill
,有5个属性查找,只是将其分配给局部变量。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...