VB.NET语法基础

前端之家收集整理的这篇文章主要介绍了VB.NET语法基础前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用的时候,传入参数的值是“Cindy”。 @H_404_4@函数的定义方式为:

@H_404_4@Function functionname ([argument1[,…,argumentn]])

@H_404_4@[statements]

@H_404_4@[Return value]

@H_404_4@[statements]

@H_404_4@End Function

@H_404_4@对于函数调用方式是调用函数functionname()。如果有参数,就按照次序写在括号中。

@H_404_4@2.12(02-12.aspx)用一个函数计算两个整数的和。

@H_404_4@1: <script language="vb" runat="server">

@H_404_4@2: Function Add(intData1 as Integer,intData2 as Integer) as Integer

@H_404_4@3: intData1=intData1+intData2

@H_404_4@4: Return intData1

@H_404_4@5: End Function

@H_404_4@6: </script>

@H_404_4@7: <%

@H_404_4@8: Dim intTemp1,intTemp2 as Integer

@H_404_4@9: intTemp1=2

@H_404_4@10: intTemp2=3

@H_404_4@11: Response.Write(Add(intTemp1,intTemp2))

@H_404_4@12: Response.Write("<br>")

@H_404_4@13: Response.Write(intTemp1)

@H_404_4@14: %>

@H_404_4@在上面的程序中,有下面几点需要说明:

@H_404_4@(1) 在第2行~第5行定义了一个函数Add。这个函数带有两个参数:intData1intData2,并把一个整数作为返回值。

@H_404_4@(2) 在第3行把参数intData1intData2的和放到intData1中,并在第4行把intData1作为结果返回。

@H_404_4@(3) 在第11调用了这个函数,并把结果显示出来。

@H_404_4@在上面的子过程和函数的讲解过程中,可以看出都可以采用带参数的方式来增加子过程和函数的灵活性。需要说明的是,参数的传递有两种方式:通过值传递参数和通过引用传递参数。

@H_404_4@调用子过程和函数的时候,如果没有明确地指出,所有的参数都是通过值进行传递的。所谓通过值进行传递,就是把参数的值复制到参数中。例如例2.12中第11行的Add(intTemp1,intTemp2),就是通过值进行传递的好例子。在真正执行第2行~第5行定义的Add函数时,是把intTemp1的值2复制给了intData1,把intTemp2的值3复制给了intData2。在第3行把intData1intData2的和赋值给intData1的时候,intData1的值变成了5,但是这个时候,intTemp1的值仍然是2,不是5(通过第13行的执行可以看出来),这就是通过值传递参数。这时,intData1intTemp1是两个不同的变量,在内存中占用不同的存储空间。

@H_404_4@函数和子过程中,使用关键字ByVal来显式表示通过值传递参数。也就是说,如果要用显式的方式进行定义,第2行的函数定义可以写成:

@H_404_4@Function Add(ByVal intData1 as Integer,ByVal intData2 as Integer) as Integer

@H_404_4@默认的情况是采用通过值传递参数。

@H_404_4@那么什么是通过引用传递参数呢?请先看下面的例子。

@H_404_4@2.13(02-13.aspx)用一个函数计算两个整数的和。

@H_404_4@1: <script language="vb" runat="server">

@H_404_4@2: Function Add(ByRef intData1 as Integer,ByRef intData2 as Integer) as Integer

@H_404_4@3: intData1=intData1+intData2

@H_404_4@4: Return intData1

@H_404_4@5: End Function

@H_404_4@6: </script>

@H_404_4@7: <%

@H_404_4@8: Dim intTemp1,intTemp2))

@H_404_4@12: Response.Write("<br>")

@H_404_4@13: Response.Write(intTemp1)

@H_404_4@14: %>

@H_404_4@2.13与例2.12的区别就在于第2行的Add函数的定义。在这里使用了ByRef关键字表示这时的参数是通过引用进行传递的。执行这个程序就会发现,在程序执行完之后,不但intData1的值变成了5,同时intTemp1的值也变成了5

@H_404_4@通过引用传递参数的方法是把参数的地址传递进去。在第11行进行传递的时候,不是把intTemp1的值复制给intData1,把intTemp2的值复制给intData2,而是把intTemp1的地址给了intData1的地址,把intTemp2的地址给了intData2的地址。在传递成功之后,intData1就是intTemp1intData2就是intTemp2。所以在第3intData1的值发生变化时,intTemp1的值也同时发生了变化。

2.5.3 变量的作用域

@H_404_4@在进行变量声明时,变量声明的位置决定了这个变量的作用范围。在一个过程或函数外声明的变量是全局变量,对本程序内部所有的过程和函数都起作用;而在一个过程或函数内部声明的变量是局部变量,只对本过程或函数起作用。

@H_404_4@下面通过一个例子说明全局变量和局部变量的区别。

@H_404_4@2.14(02-14.aspx)全局变量和局部变量的使用。

@H_404_4@1: <script language="vb" runat="server">

@H_404_4@2: Dim strGlobal as String="global"

@H_404_4@3: Sub SayHello

@H_404_4@4: Dim strTemp as String="hello!"

@H_404_4@5: Response.Write (strTemp & "<br>")

@H_404_4@6: Response.Write (strGlobal & "<br>")

@H_404_4@7: if strGlobal<>"" then

@H_404_4@8: Dim strTemp1 as String="hello cindy!"

@H_404_4@9: Response.Write (strTemp1 & "<br>")

@H_404_4@10: end if

@H_404_4@11: 'Response.Write (strTemp1 & "<br>")

@H_404_4@12: End Sub

@H_404_4@13: </script>

@H_404_4@14: <%

@H_404_4@15: SayHello

@H_404_4@16: %>

@H_404_4@上面的例子中,有下面几点需要说明:

@H_404_4@(1) 2行声明的变量strGlobal定义在所有的函数或者过程之外,所以是一个全局变量。由于在定义这个变量的时候就为这个变量赋值为“global”,所以,在后面的程序中,第一次使用这个变量时这个变量的值就是“global”。

@H_404_4@(2) 3行~第12行定义了一个子过程SayHello。在这个过程中,首先在第4行定义了一个变量strTemp,由于这个变量是定义在子过程中的,所以这个变量是一个局部变量。在第5显示这个变量的值的时候,会显示一个“hello!”字符串。

@H_404_4@(3) 6行要显示strGlobal的值,由于这是一个全局变量,所以会显示1行赋值的“global”。

@H_404_4@(4) 7行~第10行定义了一个If/Endif代码块,在这个代码块中,定义了一个块级局部变量strTemp1(8)。由于这个变量是定义在代码块中的,所以只在这个代码块中起作用。所以在第9行要显示它的值的时候,会显示hello cindy!”。而如果取消第11行的注释,系统将会通告strTemp1变量没有定义。

@H_404_4@通过上面的例子可以看出,在编写程序的时候,要时刻注意变量的作用域的问题。因为在不同模块中修改全局变量会导致模块之间相互影响,违反了进行模块化程序设计的初衷。所以要设计好的程序,就应该尽量减少全局变量的使用。

猜你在找的VB相关文章