简而言之,ByRef 和 ByVal 的区别在于参数源是否可以被函数修改,前者(默认方式)是可以被修改的,而后者是不能被修改的。
例:

Private Function Func(ByRef argv1 As String, ByVal argv2 As String)
    argv1 = "I love WYC!"
    argv2 = "I love WYC!"
End Function Function Func()

调用:

Sub Main() Sub Main()
    Dim a As String, b As String
    a = "This is a!"
    b = "This is b!"
    Func a, b
    MsgBox a & ";" & b
End Sub

程序执行后的结果为: I love WYC!;This is b!
原因是:ByRef 类型的参数在函数过程中被重新赋值,所以函数调用结束后,a变量的值为新被赋予的“I love WYC!”,而作为 ByVal 类型的参数b,由于不能被程序修改,即使在函数过程中对该变量重新赋值,其值仍为函数调用前的“This is b!”。另外,声明 ByRef 类型的参数时,可以不声明为 ByRef <参数><类型>,而只用 <参数><类型> 即可, ByVal 则必须使用 ByVal <参数><类型>。

写给初学者:VB 中 ByRef 与 ByVal 参数传递方式的区别相关推荐

  1. VBScript的中ByRef和ByVal的不同

    在VBScipt中ByRef表示的是地址的变化,而ByVal表示的是值得变化,比如 Dim i,j i=1 j=1 Function ByRefValue(ByRef val1) val1=val1+ ...

  2. VB中传值(ByVal)和传地址(ByRef)的区别

    ByVal 与 ByRef(默认值) 这两个是子过程的参数传递时,指定参数按什么传递的 ByVal(按值传递) ByRef(按地址传递) 具体这样来理解: 过程中的参数列表,我们称形参 调用过程时的参 ...

  3. VB中Sub过程与Function过程的区别

    VB的通用过程分为两种类型:Sub过程和Function过程.通用过程既可以保存在窗体模块(.Frm)中,也可以保存在标准模块(.Bas)中.通用过程与事件过程不同,它不依附于某一对象,也不是有对象的 ...

  4. vb中randomize和rnd函数的使用区别

    在学VB的随机函数时,出现了randomize和rnd函数,并且MSDN中显示有 randomize(number) rnd(number) 竟然可以加参数. 因此,刚刚研究了一下加number参数的 ...

  5. VB中Unload、END、Hide的区别

    1.Unload 语句 从内存中卸载窗体或控件. 在卸载窗体前,会发生 Query_Unload 事件过程,然后是 Form_Unload 事件过程.在其中任一过程中设置 cancel 参数为 Tru ...

  6. html的冒号有什么作用,vb中冒号和分号有什么作用

    例题: Private Sub Form_Click() Print "欢迎来到CSS布局HTML"; Print "nihao" End Sub 分号 ; 是 ...

  7. VB中窗体模块、标准模块、类模块的区别

    VB的代码存储在模块中.在VB中提供了三种类型的模块:窗体模块.标准模块和类模块. 简单的应用程序可以只有一个窗体,所用的程序都驻留在窗体模块中,而当应用程序庞大复杂时,就要另外附加窗体.最终可能有几 ...

  8. VB中什么是类,类模块有什么作用

    一.什么是类? 用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式.类是面向对象编程的核心. VB最为人垢病的是它的面向对象特性.实际上VB是一种基于对象的开发工具.在VB中 ...

  9. VB中Byval和byref的区别

    在VB中Byval 和byref怎么区别?简单来说Byval是传值,byref是传地址,ByVal :表示该参数是按值方式传递的.ByRef :表示该参数按引用方式传递.下面绿茶小编为大家详细介绍By ...

最新文章

  1. 25个让人惊叹的 HTML5 应用实验
  2. 关于《Java编程思想》的简单纠正
  3. javadoc源码获取
  4. 定期存款可以提前取出来吗_如果银行存款利率涨了,定期存款有必要取出再存吗?...
  5. Vue.js 与 ActiveX 控件
  6. 每日一题/012/数学分析/求极限/拉格拉日中值定理/幂指函数求导
  7. 罗马时钟代码html,用Html实现炫酷罗马时钟
  8. php 漏洞扫描,10个最佳PHP代码安全扫描程序来查找漏洞
  9. 计算机在输电线路设计中的应用研究,计算机在输电线路基础设计中的应用原稿(电子版)...
  10. 计算机硬件系统包括哪几部分组成,计算机硬件系统由哪几部分组成
  11. Python程序设计——基本语法
  12. x86 单线并发多拨_基本上,单线多拨配置成功
  13. CHROME扩展笔记之webRequest·图片拦截
  14. 联想电脑尺寸在哪里看_图文教你如何查看thinkpad的型号_查看thinkpad型号的方法-系统城...
  15. deepstream6.1-YOLOv5部署
  16. 用Python批量替换多个Word文件中的文字
  17. 《Composing Programs》学习笔记(1.1)开始(关键词:软件工程/抽象/函数)
  18. (转)对冲基金:AQR合伙人:“沉闷”股票回报更好
  19. 随诊医疗软件App-双端(D/C)
  20. 计算机学科论文期刊,计算机学科期刊文章参考文献 计算机学科论文参考文献数量是多少...

热门文章

  1. Gstore官网学习二:安装(笔者自带填坑)
  2. 屏幕和摄像头中的视频分辨率P,I,K,MP表示的含义,720p,1080p,2k,5MP
  3. PCIe | 基础知识点扫盲
  4. 区块链赚钱攻略:最新干货 区块链人士必读!
  5. 麻省理工学院计算机科学,麻省理工学院素以世界顶尖的工程学和计算机科学而享誉世界[1-2] ,位列2015-16年世...
  6. SDM660 开机xbl中配置I2C
  7. mysql 怎么加上撇号_php - 如何在写入Mysql数据库时处理撇号
  8. 使用xlnt库读取excel中文乱码
  9. Deep Neural Networks are Easily Fooled:High Confidence Predictions for Unrecognizable Images
  10. 什么是僵尸进程(Zombie Processes)