3.6.3 函数
- 摘要:《ASP .NET程序设计教程》第3章“ASP .NET简介”第6节“过程”。本节主要介绍函数的基本知识。
- 标签:过程 VB ASP .NET ASP .NET程序设计教程
函数(Function)是带有返回值的过程。VB .NET的函数包括系统的内建函数和自定义函数。内建函数是系统定义好的,在程序中可以直接使用。例如,在前面的例子中使用的Now、CInt都是内建函数。自定义函数则是用户根据需要按照函数定义语法定义的函数。
1. 自定义函数
语法:
[Private|Public]Function 函数过程名(参数表) [As 数据类型]
语句块
函数名=返回值
[Exit Function]
[语句块]
End Function
函数定义的语法格式与Sub子程序基本相似,有3点不同:
?函数定义的开始和结束标志分别是Function和End Function;
?函数定义头部有“As 数据类型”部分,用于说明函数返回值的类型;
?函数中需要有返回函数值的语句,返回函数值语句有以下两种形式:1) 函数名=表达式;2) Return表达式。
例如,以下程序定义了一个无参函数GetPi,它返回圆周率的值:
Function GetPi( ) As Double
Dim Pi As Double =3.14
GetPi=Pi
End Function
再如,以下函数返回圆面积,参数r为圆的半径:
Function Area(ByVal r As Double) As Double
Dim Pi As Double =3.14
Return Pi*r*r
End Function
2.函数调用
函数的调用格式与Sub子程序相同,即在函数名之后加上实参表。例如,以下语句调用Area函数:
TxtArea.Text = CStr(Area(5)) '求半径为5的圆面积并显示
以下语句都可调用GetPi函数:
Dim Pi As Double = GetPi() '定义变量Pi并调用函数为其赋初值
Call GetPi() '无法利用函数的返回值
可见,当使用Call格式调用函数时,将无法使用函数的返回值,因此这种格式很少用。另外,对于无参函数,在调用时不可省去函数名之后的一对括号,这是其与Sun子程序调用的不同之处。
【例3.10】显示1~6的1~6方值,如图3-18所示。
图3-18 计算方幂的函数及其调用 |
源代码如下(Ex3-10.aspx):
3. 内建函数
VB .NET的内建函数非常丰富,为编程提供了极大的方便。内建函数可分为以下6类:
(1) 数据类型函数
包括获取数据类型、检查数据类型、转换数据类型函数。常用函数有:
CChar(exp):将参数转换为Char类型数据,参数必须为0~65535。
CDate(exp):将参数转换为Date类型数据,参数必须为有效的日期时间表示方法。
CInt(exp):将参数转换为Integer类型数据,参数必须为-2147483648~2147483647间的整数,小数部分会被四舍五入。
CLng(exp):将参数转换为Long型数据,参数必须为-9223372036854775808 ~ 9223372036854775807间的整数,小数部分会被四舍五入。
CStr(exp):将参数转换为String类型数据。若参数为Boolean类型,则返回字符串“True”或“False”;若参数为Date类型,则返回值将以系统的短日期格式显示。
Asc(var)、AscW(var):参数var可以是Char或String类型数据,返回值是字符或字符串第一个字符的ASCII码。例如:Asc ('1') 返回49,Asc ('123') 也返回49。
Chr(int):参数int为Integer类型数据,函数将返回ASCII为参数值的字符。例如:Chr(97),将返回字符'a'。
Int(num):返回参数的整数部分。若参数小于0,则返回小于等于参数的第一个负数。例如:Int(2.8) 返回2,Int(-2.8) 返回-3。
(2) 数学函数
数学函数位于System.Math命名空间下的Math类中,因此使用数学函数的程序中应使用
导入该命名空间。常用数学函数有:
Abs(num):返回参数的绝对值。例如:Abs(-2) 将返回2。
Exp(num):返回e的num次方值。
Round(num):将参数num的值四舍五入后返回。例如:Round(3.2) 返回3。
Sign(num):符号函数,返回参数的正负号,若num>0,返回1;若num<0,返回-1;若num = 0,返回0。
Sqrt(num):返回参数的平方根。
Rnd[(num)]:返回一个0~1之间的随机数,参数与返回值类型均为Single类型。若参数num < 0,则每次产生相同的随机数;若num>0,则会依序产生下一个随机数,这是默认值;若num = 0,则返回最近一次产生的随机数。在使用Rnd产生随机数之前,最好使用Randomize语句产生随机数种子。
(3) 日期时间函数
包括获取/设置时间、返回日期时间、计算日期时间函数。常用函数有:
Now():返回系统当前日期和时间。
Today():返回或系统当前日期。
DateSerial(year As Integer,month As Integer,day As Integer) As DateTime:返回由三个参数拼接而成的日期。参数year必须是在1~1999或0~99之间的整数,若是0~99,则被解释为1930~2029;month必须是1~12之间的整数;day必须是1~31之间的整数。
DateValue(str As String) As DateTime:将字符串转换成日期。参数str必须是表示由1年1月1日00:00:00到9999年12月31日23:59:59的字符串表达式。例如:DateValue ("February 12 2005"),将返回#2005/2/12#。
TimeValue(str As String) As DateTime:将字符串转换为时间。参数str必须是表示由1年1月1日00:00:00到9999年12月31日23:59:59的字符串表达式。例如:TimeValue("9:15:20 AM"),将返回#上午09:15:20#。
MonthName(month As Integer) As String:获取月份名称。例如:MonthName(1) 将返回“January”。
WeekdayName(weekday As Integer) As String:获取星期几名称。
DateAdd(interval As DateInterval, num As Double,dt As DateTime) As DateTime:日期时间增减。其中DateInterval是枚举值,指出日期时间增减的单位,取值有:
DateInterval.Year:年
DateInterval.Month:月
DateInterval.Day:日
DateInterval.WeekOfYear:一年中的第几周
DateInterval.Minute:分钟
DateInterval.Quarter:季
DateInterval.DayOfYear:一年中的第几天
DateInterval.Hour:小时
DateInterval.DayOfWeek:一周中的星期几
DateInterval.Second:秒数
例如:DateAdd(DateInterval.Quarter, 2, #2005/3/20#) 将返回#2005/9/20#,即#2005/3/20#加上2个季。
DatePart(interval As DateInterval, dt As DateTime) As Integer:返回日期时间中的指定部分。例如:DatePart(DateInterval.Year,#2005/3/20#) 将返回2005。
DateDiff(interval As DateInterval, dt1 As DateTime, dt2 As DateTime) As Long:计算日期时间差,返回dt1和dt2两个时间的间隔数,以interval为间隔单位。例如:DateDiff (DateInterval.Day, #12/5/99#, #12/15/99#) 将返回10,即两个日期间隔10天。
(4) 字符串函数
包括字符串转换、字符串搜索、比较、筛选与替换函数。常用函数有:
LCase(str):将参数转换成小写字母。例如:LCase ("Hello")将返回"hello"。
UCase(str):将参数转换成大写字母。
StrComp(str1 As String,str2 As String) As Integer:字符串比较,若str1小于str2,返回-1;若str1大于str2,返回1;若str1等于str2,返回0。
Replace (str As String,find As String,replacement As String) As String:字符串替换,将str中的find子字符串用replacement字符串替换。例如:Replace ("You are right!", "You","We"),将返回"We are right!"。
InStr(Start As Integer, str1 As String, str2 As String) As Integer:返回str2字符串在str1字符串中第一次出现的位置。例如:InStr(1, "Hello", "lo") 将返回3。
Join(source() As String) As String:将字符串数组组成一个单一的字符串。
Len(str):返回字符串的长度。
Left(str, int):返回字符串str左边的int个字符。例如Left("You are right!", 2) 将返回"Yo"。
Right(str, int):返回字符串str右边的int个字符。
LTrim(str)、RTrim(str)、Trim(str):删除字符串中的空格。LTrim(str) 为删除字符串中左边的空格;RTrim(str) 为删除字符串中右边的空格;Trim(str) 为删除字符串中左右两边的空格。
Mid(str, start[, length]):返回字符串str中从start参数指定的字符开始的length长度的字符串。若未指定length,则返回start之后的全部字符。例如Mid("You are right!", 9, 5) 将返回"right"。
(5) 格式化函数
包括日期时间格式化、货币值格式化、数值格式化、百分比格式化函数。
(6) 数组处理函数
包括LBound、UBound等。
附录B列出了VB .NET常用的内建函数。下面举一例。