-
vb.net教程之过程和函数
过程和函数
VB.NET支持子过程和函数,它们都可以根据需要设置参数。它们之间惟一的区别是函数可以有返回值而子过程没有。子过程的定义方式为:
Sub subname ([argument1[,…, argumentn]])
[statements]
End Sub
对于子过程的调用方式是直接调用过程名subname。如果有参数,就在后面按照次序将参数在括号中写好。
例2.11(11.aspx)用一个子过程显示对一个用户的问候信息:
1: <script language="vb" runat="server">
2: Sub SayHello(strUserName as String)
3: Response.Write ("Hello!" & strUserName & "<br>")
4: End Sub
5: </script>
6: <%
7: SayHello("Cindy")
8: %>
函数的定义方式为:
Function functionname ([argument1[,…, argumentn]])
[statements]
[Return value]
[statements]
End Function
对于函数的调用方式是调用函数名functionname()。如果有参数,就按照次序写在括号中。
例2.12(12.aspx)用一个函数计算两个整数的和。
1: <script language="vb" runat="server">
2: Function Add(intData1 as Integer,intData2 as Integer) as Integer
3: intData1=intData1+intData2
4: Return intData1
5: End Function
6: </script>
7: <%
8: Dim intTemp1,intTemp2 as Integer
9: intTemp1=2
10: intTemp2=3
11: Response.Write(Add(intTemp1,intTemp2))
12: Response.Write("<br>")
13: Response.Write(intTemp1)
14: %>
在上面的子过程和函数的讲解过程中,可以看出都可以采用带参数的方式来增加子过程和函数的灵活性。需要说明的是,参数的传递有两种方式:通过值传递参数和通过引用传递参数。
在函数和子过程中,使用关键字ByVal来显式表示通过值传递参数。也就是说,如果要用显式的方式进行定义,第2行的函数定义可以写成:
Function Add(ByVal intData1 as Integer, ByVal intData2 as Integer)
默认的情况是采用通过值传递参数。
例2.13(13.aspx)用一个函数计算两个整数的和。
1: <script language="vb" runat="server">
2: Function Add(ByRef intData1 as Integer,ByRef intData2 as Integer) as Integer
3: intData1=intData1+intData2
4: Return intData1
5: End Function
6: </script>
7: <%
8: Dim intTemp1,intTemp2 as Integer
9: intTemp1=2
10: intTemp2=3
11: Response.Write(Add(intTemp1,intTemp2))
12: Response.Write("<br>")
13: Response.Write(intTemp1)
14: %>
在这里使用了ByRef关键字表示这时的参数是通过引用进行传递的。执行这个程序就会发现,在程序执行完之后,不但intData1的值变成了5,同时intTemp1的值也变成了5。通过引用传递参数的方法是把参数的地址传递进去。
2.5.3 变量的作用域
在进行变量声明时,变量声明的位置决定了这个变量的作用范围。在一个过程或函数外声明的变量是全局变量,对本程序内部所有的过程和函数都起作用;而在一个过程或函数内部声明的变量是局部变量,只对本过程或函数起作用。下面通过一个例子说明全局变量和局部变量的区别。
例2.14(14.aspx)全局变量和局部变量的使用。
1: <script language="vb" runat="server">
2: Dim strGlobal as String="global"
3: Sub SayHello
4: Dim strTemp as String="hello!"
5: Response.Write (strTemp & "<br>")
6: Response.Write (strGlobal & "<br>")
7: if strGlobal<>"" then
8: Dim strTemp1 as String="hello cindy!"
9: Response.Write (strTemp1 & "<br>")
10: end if
11: Response.Write (strTemp1 & "<br>") //错误
12: End Sub
13: </script>
14: <%
15: SayHello
16: %>
通过上面的例子可以看出,在编写程序的时候,要时刻注意变量的作用域的问题。因为在不同模块中修改全局变量会导致模块之间相互影响,所以要设计好的程序,就应该尽量减少全局变量的使用。
2.6 常用函数
1)数学函数
Abs(-7) 绝对值
atan(1) 反正切值
cos(4.5) 余玄值
exp(3) E的幂
int(4.8) 取整数部分
log(10) 返回自然对数值
randomize()初始化随机数生成器
ren()返回一个随机数
sqrt() 返回开方值
2)字符串处理函数
Len(“vb.net”) 返回字符串长度
Left(“good”,2) 从左取指定长度的字符串
Right(“good”,2) 从右开始取字符串
Trim() 去字符串首尾空格,Ltrim()去字符串头部空格 Rtrim()去字符串尾部空格
Instr(s1,s2) 返回字串s1在s2第一次出现的位置,
replace(s1,n,m,s2)取s1指定位置的指定长度的字串被s2替换
str(n) 将数值转换为字符串
strcomp(s1,s2) 比较两个字符串的大小
3)时间日期函数
Day() 返回任一个日期值 1-31
Month()返回月份
Year() 返回年份
Weekday() 返回星期值 1-7
Hour()返回小时数
Minute()返回分
Second()返回秒
Now() 当前日期时间
Timeofday() 当前时间
Today() 当前日期
Timer() 返回从0:00开始计数的秒数
4)其他函数
isArray() 是否为数组
isDate() 是否是有效的日期
补充:类型转换函数:
Cbool:字符型转换成布尔型
Cshort
Cint
Clong
Cdbl
Cchar
Cstr
Cdec
Cobj
Cdate
注释:’ ,rem,
续行:空格+_ label1.text=”你好”& _
“<font>欢迎”
多条语句分隔:a=b: b=c: c=a
2.7 习题
1. 编写程序,尝试使用动态数组。2. 编写一个函数用于计算两个整数的积,用通过引用传递参数的方法返回计算结果。
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比