精华内容
下载资源
问答
  • vb.net 教程 2-8 流程控制:跳转语句GOTO

    千次阅读 2017-04-04 13:12:34
    执行GOTO语句将无条件地跳转到过程内的标签所在代码。 需要注意的是:由于GoTo的跳转使代码具有不确定性,而且阅读和维护会变得更加困难,应该尽可能的减少使用。 看以下代码,输出0-100,但是当等于5时,结束输出...

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
    执行GOTO语句将无条件地跳转到过程内的标签所在代码。
    需要注意的是:由于GoTo的跳转使代码具有不确定性,而且阅读和维护会变得更加困难,应该尽可能的减少使用。

    看以下代码,输出0-100,但是当等于5时,结束输出。

        Sub main()
            For i As Integer = 0 To 100
                Console.WriteLine(i)
                If i = 5 Then GoTo equal5
            Next
            Console.ReadKey()
            Exit Sub
    
    equal5:
            Console.WriteLine("已经跳转")
            Console.ReadKey()
        End Sub


    我们定义了一个标签:equal5,当i=5时就跳转到此处的代码,不再继续输出数字。运行如下:

    再继续看以下代码:

        Sub Main()
            Dim i As Integer
            Console.WriteLine("请输入一个数字")
            i = CType(Console.ReadLine, Integer)
    
            Select Case i
                Case 0
                    GoTo statements0
                Case 1
                    GoTo statements1
                Case Else
                    GoTo statementselse
            End Select
    
    statements0:
            Console.WriteLine("输入数据为0")
    
    statements1:
            Console.WriteLine("输入数据为1")
    
    statementselse:
            Console.WriteLine("输入数据为其他")
    
            Console.ReadKey()
        End Sub

    运行时如下:

    可以看到并不是我们所希望的输出。修改代码如下:

        Sub Main()
            Dim i As Integer
            Console.WriteLine("请输入一个数字")
            i = CType(Console.ReadLine, Integer)
    
            Select Case i
                Case 0
                    GoTo statements0
                Case 1
                    GoTo statements1
                Case Else
                    GoTo statementselse
            End Select
    
    statements0:
            Console.WriteLine("输入数据为0")
            GoTo endsub
    statements1:
            Console.WriteLine("输入数据为1")
            GoTo endsub
    statementselse:
            Console.WriteLine("输入数据为其他")
            GoTo endsub
    endsub:
            Console.ReadKey()
        End Sub

     

     

     

    由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

    学习更多vb.net知识,请参看vb.net 教程 目录

     

    展开全文
  • VB里通过跳转语句goto去调用函数里的代码,但是不调用函数的参数是否可以实现?怎么得到跳转调用的函数的返回值?函数会自动退出?
  • VB GoTo语句用法实例

    热门讨论 2010-06-07 13:27:59
    VB GoTo语句用法实例 VB GoTo语句用法实例
  • vb语言怎么通过函数跳转的方式代替call语句实现函数调用?能不能不通过函数名的方式传参数而是直接把主程序的变量送入函数?
  • 使用goto实现循环,跳转语句

    千次阅读 2014-08-31 16:23:29
    /*计算从0-10的和*/ do-while语句

    /*计算从0-10的和*/

    do-while语句:

    /*****************do while版***************/

       int sum = 0;
       int i = 0;
       do
       {
           sum += i;
           i++;
       }
       while(i <= 10);


    do while 版的 goto语句实现:

       int sum = 0;
       int i = 0;
    loop:
       sum += i;
       i++;
       if(i <= 10)
            goto loop;
    done:


    /*****************do while版***************/

    while版本:

    /*****************while版***************/

       int sum = 0;
       int i = 0;
       while(i <= 10)
       {
           sum += i;
           i++;
       }
    


    while版goto语句实现:

     

      int sum = 0;
      int i = 0;
      if(!(i <= 10))
            goto done;
    loop:
        sum += i;
        i++;
        if(i <= 10)
            goto loop;
    done:


    /*****************while版***************/


    for语言实现:

    /*****************for版***************/

      int sum = 0;
      for(int i = 0; i <= 10;i++)
            sum += i;



    goto版的for语句:

     

       int sum = 0;
       int i = 0;
       if(!(i <= 10))
            goto done;
    
       loop:
           sum += i;
           i++;
           if(i <= 10)
              goto loop;
       done:


    /*****************for版***************/


    使用goto语句加深对break和continue的理解。

    计算0——100内偶数的和,break版:

    *****************理解break***************/

     

            int sum  =  0;
            for(int i  =  0 ;i  <=  100;  i++)
            {
                   if(i % 2 == 1)
                            continue;
                    sum += i;
            }


    goto 版:

     

            int i = 0;
            int sum = 0;
            if(!(i <= 100))
                goto done;
        loop:
                if(!(i % 2 == 1))
                    goto lab2;/*注意跳转的条件,以及跳转到的地方,可以看出continue只是终止了本层循环*/
    
    
    
    
        lab1:
               sum += i;
        lab2:
               i++;
               if(i <= 100)
                    goto  loop;
        done:


    *****************理解break***************/

    下面 该理解break了。

    使用上面同样的例子,不过把continue换成break。

            int sum = 0;
            for(int i = 0;i < 100;i++)
            {
                    if(i % 2 == 0)
                    <span style="white-space:pre">	</span>break;
                    sum+=i;
            }


      goto版:  

            int i = 0;
            int sum = 0;
            if(!(i <= 100))
                goto done;
        loop:
            if(!(i % 2 == 1))  /*这里可以看出直接跳出,终止循环*/
                goto done;
    
    
    
    
        lab1:
               sum += i;
        lab2:
               i++;
               if(i <= 100)
                    goto  loop;
        done:
    通过这两个例子,应该很清楚的明白break和continue之间的区别了,这与编译器生成汇编指令的逻辑是相同的,其实C中的goto就是汇编当中的jmp语句了。


    展开全文
  • 使用跳转语句执行分支,该语句导致立即传递程序控制。跳转语句中使用下列关键字: break continue goto return //--------------------------------------------------------------------------------- ...
     
     
     
     
     
     

     
      

     

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    

    转载于:https://www.cnblogs.com/burandanxin/archive/2008/06/15/1222293.html

    展开全文
  • 这里介绍VB.NET On Error语句,其实On Error并不能算是VB的优点,因为使用它会破坏程序的结构,让带有异常处理的程序难以看懂和调试。 经过长时间学习VB.NET On Error语句,于是和大家分享一下,看完本文你肯定有...

    转载 http://developer.51cto.com/art/200910/159233.htm

    这里介绍VB.NET On Error语句,其实On Error并不能算是VB的优点,因为使用它会破坏程序的结构,让带有异常处理的程序难以看懂和调试。

    经过长时间学习VB.NET On Error语句,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。本次讨论的是异常处理语句。VB.NET推荐使用Try...End Try块来进行结构化的异常处理,但是为了确保兼容性,它也从以前版本的BASIC中借鉴了VB.NET On Error语句。其实On Error并不能算是VB的优点,因为使用它会破坏程序的结构,让带有异常处理的程序难以看懂和调试。但是我一直很惊叹于VB的工程师是怎样实现它的,因为On Error可以让异常的跳转变得很灵活,不像Try那样受到限制。首先看看Try是怎样实现的:

     
    1. Public Function F1() As Integer  
    2. Try  
    3. Dim n As Integer = 2 \ n  
    4. Catch ex As Exception  
    5. MsgBox(ex.Message)  
    6. End Try  
    7. End Function 

    这是最简单的异常处理程序,通过Reflector反汇编(如果用ILDasm,不要选择“展开try-catch”),可以发现整个过程被翻译成19条指令。留意这一句:

     
    1. .try L_0000 to L_0006 catch Exception L_0006 to L_0022 

    这就是典型的try块,在catch处直接指定要捕获的异常,然后指定catch区的位置,非常清晰。还要留意这两句:

     
    1. L_0007: call ProjectData.SetProjectError  
    2. L_001b: call ProjectData.ClearProjectError 

    可以看出,这两句是在catch块的开头和末尾。深入这两个过程我发现它是在为Err对象记录异常。看来使用Err也是语法甜头,性能苦头,凭空添加了这两句(幸好都不太复杂)。

    接下来我编写了一个与此功能类似的函数,用的是On语句处理异常:

     
    1. Public Function F2() As Integer  
    2. On Error GoTo CATCHBLOCK  
    3. Dim n As Integer = 2 \ n  
    4. Exit Function  
    5. CATCHBLOCK:  
    6. MsgBox(Err.Description)  
    7. End Function 

    这不比上一个过程复杂,但是反汇编以后,它的IL代码竟然有47条指令,刚才才19条啊!最主要的改变是try部分,现在它是这样:

     
    1. .try L_0000 to L_0022 filter L_0022 L_0036 to L_0060 

    注意,catch不见了,而出现了filter。我从没在C#生成的IL中见过filter。我查询了Meta Data一节的文档,filter大概能够进行一些过滤,满足一定条件才进入处理异常的块中,本例来说,L_0022指令开始就是过滤器,它是:

     
    1. L_0022: isinst Exception  
    2. L_0027: brfalse.s L_0033  
    3. L_0029: ldloc.s V_4  
    4. L_002b: brfalse.s L_0033  
    5. L_002d: ldloc.3  
    6. L_002e: brtrue.s L_0033  
    7. L_0030: ldc.i4.1  
    8. L_0031: br.s L_0034  
    9. L_0033: ldc.i4.0  
    10. L_0034: endfilter 

    endfilter就是异常处理部分代码的开始。而L0030之前的代码是过滤器的判断部分,V_4和V_3是VB自己加入保存错误代码的变量。在整个反汇编中,我发现设计成处理异常部分的代码在IL里其实也是在try块中,也就是说程序的结构已经不是规整的try...catch块,产生异常的语句和处理异常的语句在一起,而真正处理异常的指令是一大堆繁冗拖沓的跳转语句。

    下面看看我编写的第三个例子:

     
    1. Public Function F3() As Integer  
    2. On Error Resume Next  
    3. Dim n As Integer = 2 \ n  
    4. End Function 

    这个值有2行的过程动用了VB强大的语法杀手——On Error Resume Next,它将忽略所有异常,让代码紧接产生异常的语句继续执行下去,猜猜这个功能产生了多少IL指令?答案是50条!比普通的On Error还要长。其实现我就不多说了,和前面的On语句差不多。不过50这个数字似乎提醒了大家,不要在程序里偷懒使用On Error处理异常,这样产生的代价是不可接受的。

    最后一个例子是VB.NET的When语句,它可以实现对Catch部分的过滤:

     
    1. Public Function F1() As Integer  
    2. Dim n As Integer = 0 
    3. Try  
    4. Dim m As Integer = 2 \ n  
    5. Catch ex As Exception When n = 0 
    6. MsgBox(ex.Message)  
    7. End Try  
    8. End Function 

    里面的When语句进行了对变量n的判断,仅当n = 0的时候才进入处理部分。听到“过滤”两个字,我们已经猜出,它是用try...filter来实现的。没错。这里的filter主要是进行ex是否是 Exception型,n是否等于零等,当过滤成功,就会转移到异常处理段进行处理。这次VB生成的代码要比VB.NET On Error语句规则得多,结构相当清晰。

    本次我们还借助VB.NET On Error语句和When语句了解到try filter结构,它是C#不能生成的,因此,我发现它不能被常见的反编译器反编译(因为反编译器的编写者只知道C#,呵呵)。而且用了On Error后程序结构变得异常混乱,这在产生负面作用的时候,是不是能够变相起到保护我们代码的作用呢?

    展开全文
  • 怎样用VB 打开"我的电脑",而不是C盘或者是"我的文档". VB中SHELL语句的使用
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    而在C#语言中使用using语句导入名字空间,using System语句意义是导入System名字空间,C#中的using语句的用途与C++中#include语句的用途基本类似,用于导入预定义的变量和函数,这样在自己的程序中就可以自由地使用...
  • 前言:下面是针对初学VB同学的刷题总结。 1. 数据类型 1.1 数值类型 数值类型数据可以直接参与运算,代表的数据类型有:Integer(整型)、Long(长整型)、Single(单精度)、Double(双精度)等,囊括了整数、小数、日期...
  • VB.NET 演示带Finally的Try Catch 异常处理用法...使用Finally的好处是,把资源释放或状态还原的代码放到finally块中,可以保证在try和catch语句执行完后,一定会执行finally语句块,而不用考虑各种复杂的跳转情况。
  • VB语句集200句

    2008-08-07 15:07:00
    (3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 '恢复正常的错误提示 (5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示 (6) Application....
  • 那么VB.NET和C#是不是就完全一样,只是语法不同吗? 一、C# — 像VB一样简单,像C++一样强大的新语 C#是第一流的面向组件的语言 由 Turbo Pascal, Delphi, and Visual J++的首席设计师Anders Hejlsberg 倾心3年设计 ...
  • C# 关于跳转语句

    2014-06-13 10:53:38
    c# 编程,近段时间用C#写程序发现一个小问题,比如: private void btLog_Click(object sender, EventArgs e) { if (txtMdbFileName.Text == "") {return;...后来就用goto跳转语句替换return了
  • VB跳过错误(error)----编码小技巧

    千次阅读 热门讨论 2018-08-28 17:11:22
    vb中,可以在程序产生错误时,直接跳过错误继续下一句执行,其代码是: on error resume next 当然,我们也可以在报错时,直接跳转到指定的地方: on error goto a: ....... a: msgbox"跳转到了...
  • C# And VB 之流程控制语句

    千次阅读 2014-05-30 17:13:59
    在我们之前学过的VB中也出现了语句这一概念,现在温故而知新一下。 VB基本控制结构:顺序结构内,各块是按照它们出现的先后顺序依次执行图(a);选择结构中包含一个判断条件E,当条件成立时执行A,否则执行B图(b...
  • VB6 异常捕捉 Try catch

    千次阅读 2016-11-28 13:13:27
    请看一个VB.NET结构化异常处理的例子。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  Dim i As Long, j As Long  j = 0  Try  
  • VB 切换到指定的应用程序上写回答 VB 切换到指定的应用程序上比如说按一下Command按钮就自动切换到"哈哈"这个游戏程序然后执行按键代码要详细点- - 展开写回答有奖励共3个回答hankcs2016-04-08 超过15用户采纳过TA的...
  • VB模拟键盘输入的N种方法

    千次阅读 2017-10-17 09:01:25
    VB模拟键盘事件的N种方法 键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作。但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用...
  • VB对象的事件和方法

    2020-09-15 12:44:45
    事件是Visual Basic预先编辑好的并且能够被对象识别的的动作,VB采用的是事件驱动机制,当用户触发了某个事件时,程序就会执行该事件过程下的代码。 例如,用户点击一次按钮,就会触发一次该按钮的单击事件,即...
  • --- D:\Moontest\ConsoleApplication1\Module1.vb --------------------------------- 2 Dim i As Integer = 1 3 00000000 push ebp 4 00000001 mov ebp,esp 5 00000003 push edi 6 ...
  • 分页控件支持不同类型数据库如:MS SQLServer MySQL SQLite Access等,只要有分页SQL语句,即可根据vb.net教程分页信息,取出相应的数据内容,再将数据内容绑定或者加工显示到UI上。 分页控件需要做的事: 显示页面...
  • 可以让异常的跳转变得很灵活,不像Try那样受到限制。首先看看Try是怎样实现的: Public Functi On F1() As Integer  Try  Dim n As Integer = 2 n  Catch ex As Excepti On  MsgBox(ex.Message)  End Try End ...
  • VB中对EXCEL的各种操作

    万次阅读 多人点赞 2017-02-08 15:20:15
    VB操作excel方法汇总 Private Sub Command3_Click()    Dim i As Long  Dim j As Long  Dim objExl As Excel.Application '声明对象变量  Me.Mouse...
  • vb.net 教程 目录

    万次阅读 多人点赞 2017-04-07 23:03:24
    vb.net 教程 5-19 拓展:制作一个QQ大家来找茬和美女找茬辅助工具 (2019-11-25 16:29:53)vb.net 教程 5-20 拓展 论坛图片批量转换 (2019-11-25 16:19:31)vb.net 教程 5-21 拓展 如何给IE浏览器截图2019年11月25...
  • VB语句集 200句

    千次阅读 2007-11-30 13:21:00
    (3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 '恢复正常的错误提示 (5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示 (6) Application....
  • C#和VB.net代码转换工具

    千次阅读 2016-12-08 22:32:36
    C# 的优势是微软大力推广,网上的开源库也很多,资源不错。...VB.Net相对弱势一些,但是也有许多用户。通过代码转换工具就可以让VB.Net用上C#的各种开源库 当然,我更倾向于VB.Net -> C# ,因为我的C/C++更熟练一些。
  • VB程序破解

    千次阅读 2016-04-02 16:03:34
    VB程序的破解思路总结、编译方式vs破解工具 比较 把一个简单的VB计时器程序研究透了,对于VB破解应有较大帮助,如有错误欢迎指出。 VB程序也是一个非常有趣的东西,你去看VB的主程序,是用Microsoft Visual ...
  • VB中 On error 的用法

    千次阅读 2018-11-25 14:24:25
    2. 如果产生错误则跳到需要跳转的地方,删掉后可能会不能正确运行。 语法: On Error GoTo line 、On Error Resume Next、On Error GoTo 0 1. On Error GoTo line:启动错误处理程序,且该例程从必要的 line...
  • 最近在帮同学写数据库的课程设计,顺手整理了一些VB编程与连接数据库的笔记。 新手入门,请多包涵。 目录 ADO控件连接数据库 使按钮不可用 加载隐藏显示关闭窗体 调用其他窗体的对象 文本框输入密码变 * 退出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,579
精华内容 1,831
关键字:

vb跳转语句