-
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. 编写一个函数用于计算两个整数的积,用通过引用传递参数的方法返回计算结果。
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比