频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

3.6.2 参数传递

作者: 郑阿奇 出处:机械工业出版社  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2007-04-07 17:42
关 键 词:参数  VB  ASP  .NET  ASP .NET程序设计教程
阅读提示:《ASP .NET程序设计教程》第3章“ASP .NET简介”第6节“过程”。本节主要介绍VB.NET中过程的设计和调用。本文介绍过程中参数的传递。

参数是在本过程中有效的局部变量。在调用一个带有参数的过程时,首先进行的是形参和实参的结合,即实现调用过程的实参与被调过程的形参之间的数据传递。VB .NET参数传递有两种方式:按值传递和按地址传递。
每个参数的格式说明为:
[{ByVal|ByRef}] [ParamArray] 参数名 [()] As 参数类型 [=默认值]
参数表中可有多个参数,以逗号隔开。

1. 按值传递参数
按值传递参数方式在VB .NET中是默认的,用“ByVal”关键字指出参数是按值来传递的。按值传递时,首先为形参变量分配一个临时的内存单元,然后将实参的值传递到这个临时单元中。按值传递是单向的,如果过程改变了形参值,则只是影响临时单元的值,而不会影响实参变量的值。例如:
Sub Inc(ByVal i As Integer)
i = i+1
End Sub
Sub CallInc()
Dim X As Integer = 10
Response.Write("X=" & X)
Inc(X)
Response.Write("X=" & X)
End Sub
CallInc过程中调用Inc函数,将实参X的值(10)传递给形参变量i,函数Inc()将i增1,但这个改变并不影响实参变量X的值,因此CallInc两次输出的X均为10。

2. 按地址传递参数
按地址传递参数是将调用过程的实参变量地址传递给相应的形参,这样实参和形参具有相同的地址,即形参与实参共享存储单元,因此,在被调用过程中若改变形参的值,则相应的实参值也被改变。用“ByRef”关键字指出参数是按地址来传递的。按地址传递的效率比较高,因为,无论变量是什么类型,传进的都只是4个字节。
【例3.8】将两个变量的值进行交换。程序执行时显示图3-15所示的界面,在上面的两个文本框中输入两个整数,点击“提交”按钮,将在下面的两个文本框中显示交换以后的值,如图3-16所示。
图3-15   运行界面
本例设计一个Swap(ByRef X, ByRef Y)子程序,使用传地址参数“ByRef”将X和Y对应的实参值交换。
源代码如下(Ex3-8.aspx):





交换变量值



请输入两个整数:A=  

    A=  


执行交换操作后:A=  

    A=  


图3-16   运行结果 

图3-16   运行结果

3. 可选参数
参数表中含有“Optional”关键字的参数为可选的。若某参数是可选的,则参数表中该参数之后的所有参数也必须是可选的。每个可选的参数一定要有一个默认值,并且可选参数的默认值必须是常数。下面的例子给出了带有可选参数的过程的定义:
Sub ABC(Optional ByVal MyCountry As String="China")
……  '子程序体语句
End Sub
当调用这个过程的时候,可以选择是否给过程传递参数,如果不传递参数,则过程使用默认的参数。例如过程调用ABC() 未给出实参值,因此将使用参数的默认值”China”。

4. 数组参数
在定义过程时,可用数组作为参数。声明数组参数的语法格式与一般参数有区别。
语法:
[ByVal|ByRef] 形参数组名() [As 数据类型]
其中,数据类型为形参数组的元素类型。形参数组对应的实参数组必须也是数组,并且数据类型与形参数组元素类型一致。实参表中的数组不需要使用“()”。数组参数传递的特点是形参数组与实参数组共用存储空间。传递数组的方式可以是ByVal(默认方式) 或ByRef;当以ByVal方式传递时,过程中的语句可以改变数组的元素值,但不能改变参数数组。ByRef方式可以改变参数数组。
例如,以下子程序求数组A各元素之和,n为数组的最大下标值:
Sub SumArray(A() As Integer,n As Integer)
Dim i As Integer, S As Integer =0
For i = 0 To n
S += A(i)
Next
End Sub
【例3.9】显示如图3-17所示的货品表。设计一个子程序DisplayGoods,以二维数组作为输入参数,显示二维数组各元素的值;在Page_Load事件处理过程中,将货品的品名、数量和单价数据存储于一个二维数组中,将该数组作为实参传递给DisplayGoods。
图3-17   利用数组参数传递表格数据并显示之
源代码如下(Ex3-9.aspx):

说明:
1) Sub DisplayGoods(A(,) As Object),其中A(,)表示参数是二维数组。
2) 程序中使用了LBound(A, 1)、UBound(A,1)、LBound(A,2)、UBound(A, 2) 分别取数组第一维和第二维的最小和最大下标值。
3) 使用了Object类型的数组,Object类型可以是任何一种数据类型,包括字符串和数字
类型。

【责任编辑:老杨 Tel:(010)68576606-8005】


回书目   上一节   下一节
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有