精华内容
下载资源
问答
  • Tips:欢迎公众号设置为星标,VB技术干货文章可以第一时间看到。如您在学习VB过程有独特见解或者想法...函数和过程的参数传递方式在调用过程时,过程使用是实际参数,它要与定义过程时形式参数一一对应,...

    Tips:欢迎公众号设置为星标,VB技术干货文章可以第一时间看到。如您在学习VB过程中有独特的见解或者想法,欢迎投稿,可在公众号文章下直接留言.

    1. VB编程语言基础知识点总结

    2. VB编程基本数据类型完整剖析

    3. VB编程设计--文件同步程序的开发

    4. VB与数据库开发三步走攻略!

    函数和过程的参数传递方式

    在调用过程时,过程中使用的是实际参数,它要与定义过程时的形式参数一一对应,并以适当的形式将实参传给形参,这便是参数传递,也是虚(形参)实(实参)结合。

    VB编程中参数传递方式有两种:传值和传址。


     传值


    传值:将实参的值传给形参后,实参与形参间便无任何联系,即形参的变化不会对实参产生任何影响。传值时,在形参前用 ByVal来界定。

    例: 传值调用。

    Private Sub Command1_Click()

        Dim x as Integer,y as Integer

        x=10

        y=20

        Print ″x=″;x,″y=″;y; 

        Call temp(x,y)

        Print ″x=″;x,″y=″;y;

    End Sub

    Sub temp (ByVal x As Integer,ByVal y As Integer)

        x=x+100

        y=x*60

        Print ″x=″;x,″y=″;y;

    End Sub

    09f4d391dec1c413d013528040a60173.png


     传址


    传址(默认方式,也叫引用):形参与对应实参用相同的内存地址,形参的改变将影响实参,形参实际上是实参的别名。

    例 : 按址传递

    Private Sub Command1_Click() ‘按址传递

        x = 10

        y = 20

        Cls

        Print "x="; x, "y="; y, "调用前实参"

        Call temp1(x, y)

        Print "x="; x, "y="; y, "调用后实参"

    End Sub

    Sub temp1(x,  y) ‘按址传递

        x = x + 100

        y = x * 60

        Print "x="; x, "y="; y, "调用过程中的参数"

    End Sub

    4bda2b12c3a40e3d6cca6ff328022fb1.png

    综上,我们可以发现,同样的代码,使用不同的参数传递方式,其运行结果也不相同,大家在学习的过程中一定要深刻理解。

    51f79237fd93799aa30b7c2caf436534.png

    大家在VB学习中有任何问题

    可以添加下图老师微信号

    e2138166820e6803c1ed94bc9a967016.png

    展开全文
  • VB过程使用参数分为实参和形参,简单讲,在过程定义给定参数是形参,而在过程调用语句给定参数是实参。...对参数传递方式的正确判别是过程学习中的一个难点,也是等级考试中的一个考点
  • 但在数据量特别大情况下,这两种方式明显就不合适宜,这意味着我们要写很多URL参数或者是Seesion变量来保存数据。但在学习《Professional ASP.NET 3.5 SP1 Edition in C# and VB过程我发现还有一些我不...

    通常情况下,我们为了从一个页面传递某些数据到另外一个页面,总是喜欢用 URL参数或者Seesion来实现。但在数据量特别大的情况下,这两种方式明显就不合适宜,这意味着我们要写很多的URL参数或者是Seesion变量来保存数据。但在学习《Professional ASP.NET 3.5 SP1 Edition in C# and VB》的过程中我发现还有一些我不知道的其它方法可以实现。我觉的有必要与大家一起分享,与是决定写下这篇笔记。

     

    asp时代,我们经常使用跨页面传递的方式传输数据,但当我们进入到ASP.NET时代后却发现这种方式基本无法继续延续了。这不禁让我们在某些时候怀念ASP的灵活性了,不过好在ASP.NET 3.5时候,又为我们开启了这样的功能。具体是如何实现的呢?先让我们来看一个例子。

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page1.aspx.cs" Inherits="WebApplicationASP.NET3._5Test.Page2" %>
    
     
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
     
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head runat="server">
    
        <title>First page</title>
    
    </head>
    
    <body>
    
        <form id="form1" runat="server">
    
        <div>
    
        you name:<asp:TextBox ID="TextBox_Name" runat="server"></asp:TextBox><br />
    
        when do you want to fly? <br />
    
            <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar><br />
    
    <br />
    
    <asp:Button runat="server" ID="Button1" Text="submit page to itself" onclick="Button1_Click" />
    
        &nbsp;
    
            <asp:Button ID="Button2"  runat="server" Text="submit page to page2.aspx" PostBackUrl="~/Page2.aspx" />
    
            <br />
    
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    
            <br />
    
        </div>
    
        </form>
    
    </body>
    
    </html>

     

     

     

    在这个例子中有一个文本输入框,一个日历控件,还有一个标签控件和两处按钮。不过这都不是重点。重点是两个按钮,Button1有一个onclick事件,执行后会回传到本页面。并把用户输入的名字和选择的日期显示到LABLE1上去。具体方法如下:

    protected void Button1_Click(object sender, EventArgs e)
    
            {
    
                Label1.Text = TextBox_Name.Text + Calendar1.SelectedDate.ToString();
    
            }

     

    但另一个Button2就不一样了,它指定了一个PostBackURL,这意味着它会把数据回传到别外一个页面Page2.aspx。那Page2.aspx又是什么样子的呢?代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page2.aspx.cs" Inherits="WebApplicationASP.NET3._5Test._Default" %>
    
     
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
     
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head runat="server">
    
        <title></title>
    
    </head>
    
    <body>
    
        <form id="form1" runat="server">
    
        <div>
    
        
    
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    
        </div>
    
        </form>
    
    </body>
    
    </html>

     

    页面文件很简单,再来看看后台代码:

     

    protected void Page_Load(object sender, EventArgs e)
    
            {   
    
                TextBox p_TextBoxName;
    
                Calendar p_Calendar;
    
     
    
                p_TextBoxName = (TextBox)PreviousPage.FindControl("TextBox_Name");
    
                p_Calendar = (Calendar)PreviousPage.FindControl("Calendar1");
    
     
    
                Label1.Text = p_TextBoxName.Text + p_Calendar.SelectedDate.ToString();
    
            }

     

    这里有稀奇了。PreviousPage,这就是我们今天的重点。Page 类下含有PreviousPage属性,它的作用是获取向当前页传输控件的页。也就是说,如果页面1向页面2传输了控件,那就可以在页面2中通过这个属性取得页面1上的所有控件。而这一切就要依赖于我们的FindControl()这个方法,FindControl()方法接受一个字符串参数,这个参数就是页面1的控件ID。看到这里,我相信大家应该已经知道怎么使用了吧。

     

    不过除了上面这种方法,还有另一种也可以实现那就是为页面设置属性。具体来看代码:

    public partial class Page1 : System.Web.UI.Page
    
        {
    
            public TextBox p_TextBoxName
    
            {
    
                get { return TextBox_Name; }
    
            }
    
            public Calendar p_Calendar
    
            {
    
                get { return Calendar1; }
    
            }
    
     }

     

     

    Page1.aspx.cs中,增加了两个页面属性。再来看看Page2.apsx,在页面顶部我们加了一个PreviousPageType 指令。指定传递过来的页面为Page1.aspx

    <%@ PreviousPageType VirtualPath="~/Page1.aspx" %>

     

    然后在后台代码中我们就可以使用智能感知写下如下代码

     Label1.Text = PreviousPage.p_TextBoxName.Text + PreviousPage.p_Calendar.SelectedDate.ToString();

     

    在这句话中大家可以发现p_TextBoxName以经做为一个属性在使用,而并没有进行其它的转换,这样是不是更方便了呢?

     

    以上就是在ASP.NET 3.5中页面传值的新方法。不过我还要额外的说一点,那就是。我们Page2.aspx除了由page1.aspx传值以外,也有可能会自己给自己传递值呀,如果这个时候去执行

    Label1.Text = PreviousPage.p_TextBoxName.Text + PreviousPage.p_Calendar.SelectedDate.ToString();

    这样的语句那一定是会报错的,怎么办呢?其实我们可以这样做:

    if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
    
                {
    
                    Label1.Text = PreviousPage.p_TextBoxName.Text + PreviousPage.p_Calendar.SelectedDate.ToString();
    
                }

     

    这里的IsCrossPagePostBack方法,就是专门用来检测,当前的回传方式是不是跨页面回传的。这样我们就不怕在跨页面回传与当前页面回传之间引起错误了。

    转载于:https://www.cnblogs.com/wugang/archive/2012/10/25/2738318.html

    展开全文
  • VB中 ByRef与ByVal区别

    2019-09-22 08:53:15
    函数调用的参数传递有“值传递”和“引用传递”两种传递方式。如果采用“值传递”,在函数内部改变了参数值,主调程序对应变量值不会改变;如果采用“引用传递”,在函数内部改变了参数值,主调函数对应变量...

    函数调用的参数传递有“值传递”和“引用传递”两种传递方式。如果采用“值传递”,在函数内部改变了参数的值,主调程序的对应变量的值不会改变;如果采用“引用传递”,在函数内部改变了参数的值,主调函数对应变量的值也会发生相应的改变。“值传递”的实质传递一个变量的“值拷贝”,“引用传递”的实质是传递一个变量的“地址”。在VB中ByRef表示引用传递,ByVal为值传递,VB默认采用引用传递,C ,C++默认值传递。

    转载于:https://www.cnblogs.com/QUSIR/p/4077447.html

    展开全文
  • 按值传递(Byval)和按地址传递(ByRef)---参数传递

    千次阅读 热门讨论 2012-08-08 11:25:21
    在接触了这么多的编程语言后,似乎每个语言都要涉及到参数的传递,而参数传递过程中的两种传递方式: ①按值传递  ②按地址传递 学到现在了,仔细想想还是很模糊,从开始接触C++参数传递,只知道有...

    在接触了这么多的编程语言后,似乎每个语言都要涉及到参数的传递,而参数传递过程中的两种传递方式:


    按值传递  


    ②按地址传递


    学到现在了,仔细想想还是很模糊,从开始接触C++中的参数传递,只知道有这么个东西,但你要是让我说明白,有点够呛,在编程序的时候呢都是记住了一些写法才不会出错,紧接着学习C语言,Java都是如此,最近由于学习的需要,我要进行VB的一些学习,对于这个似乎忽然理解了 下面就是我自己的一些理解,在此分享一下

     

     按值传递:在过程被调用时,传递给形参的是调用过程中的相应实参的值,形参与实参各占有不同位置的储存空间,被调用过程在执行过程中,改变了形参变量的值,但不会调用过程的实参值。


    按地址传递:就是当调用一个过程时,是把实参变量的内存地址传递给被调用过程的形参,也就是说形参与实参使用相同地址的内存单元。因此当在被调用过程中改变形参的值,就等于改变了实参的值。


    PS:其实我个人认为就像两个小孩,都有自己的家,按值传递的就像是一个小孩去另一个小孩家玩,玩一段时间还是要回自己各自的家,而他们俩的家却没啥联系,一点没变,还在那呢  而按地址传递呢,就像是假如其中一个小孩的家发大水啦,然后这个小孩无家可归了,于是被另外一个小孩家收留了,这个小孩带着自己东西去那个小孩家,这时两个小孩拥有的是相同的一个家,他们俩就有联系了,因为那个小孩的家换成另外一个了.(不知道举得例子是否恰当)

    指针相信学习编程的人都知道吧,那么看看下面的例子

      按值传递时,实质上实参a只是把一个副本传递给形参x,也可以直接理解为传递的结果是让x*2中的x的值等于10(即a的值),乘以2后再赋值(赋值不用解释吧)给x,即实际上w方法的运算并没有对a本身进行操作。所以调用w方法前后a值始终等于10,而w方法得到的结果是20


    按址传递时,实质上实参a是把指针(地址)传递给形参x,这个指针指向的地址的值即是10,此时a与x分别有一个指针同时指向10所在地址,即实际上w方法对a本身直接进行了操作(a自身参与运算)。所以调用w方法前后a值分别等于10和20,而w方法得到的结果是依然是20。


     

    在比如拿VB中的例子来说

     

    按地址传递

    Functionfun(x As Integer, y As Integer) As Integer
    x = x * y
    If x<> 0 Then
    fun = x
    Else
    fun = y
    End If
    EndFunction
    Private SubCommand1_Click()
    Dim a AsInteger, b As Integer
    a = 2
     b = 3
     Text1.Text = fun(a, b)
     Text2.Text = fun(a, b)
     Text3.Text = fun(a, b)
     Text4.Text = fun(a, b)
    End Sub

    下面是运行的结果,通过结果可以看出,这个是按值传递的, 每一次运算后a的值都在变化。




    按值传递


    Subtext(ByVal x As Integer, ByVal y As Integer)
    x = x * 5
    y = y / 5
    Print"x="; x, "y= "; y
    End Sub
    Private SubCommand1_Click()
    Dim a AsInteger, b As Integer
    a = 10
    b = 90
    text a, b
    Print"a="; a, "b="; b
    End Sub

    由运行结果可以看出,尽管x,y的值经过运算后发生了变化,但是a,b的值仍然没有改变,这就是按值传递的小例子,就像上面图解的那样,传递过去的只是一个副本,而本身没有发生任何变化


    通过例子的观察和理解相信不懂参数传递的你也会和我一样理解了吧

    展开全文
  • VB中ByVal与ByRef有什么区别 ByVal 与 ByRef(默认值)这两个是子过程的参数传递时,指定参数按什么传递的ByVal...这样过程才能拿这些数据参与计算并实现一些功能那么在传递的过程中,就存在这两种传递方式传值时(By...
  • 我们称实参 <br />在调用时,我们要将实参的值传递给形参,这样过程才能拿这些数据参与计算并实现一些功能 那么在传递的过程,就存在这两种传递方式 传值时(ByVal),是先给形参开
  • vb6.0第五课

    2019-10-21 16:13:43
    VB中传递参数两种方式:按值传递、按地址传递。其中按地址传递,又称为“引用”。 1、按值传递参数 按值传递使用Byval定义参数。使用时,程序为形参在内存中临时分配一个内存单元,并将实参传递到这个内存...
  • VB中形参声明有两种方式,一种是ByVal,一种是ByRef,如果是ByVal则在传递参数时将实参一个拷贝传递给子程序,子程序对参数的修改不会影响原有参数。如果是ByRef,则将实参指针传递给子程序,子程序对参数的修改...
  • VBS传值与传址区别

    千次阅读 2015-10-20 10:32:48
    vb中调用函数或过程,传递参数都有两种方式——传址和传值。其中VB默认是以传址方式传递参数。 ByRef m As Integer 表示参数m以传址方式传递给函数或过程 ByVal m As Integer 表示参数m以传值方式传递给函数或...
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    从游戏基本玩法出发,主要就是俄罗斯方块形状和旋转,我们在设计在一个图片框构造了一个4*4网状小块,由这些小块组合成新形状,每四个小块连接在一起就可以构造出一造型,因此我们总共设计了7造型,...
  • VB.Net常用语法

    2009-03-15 23:47:02
    同样有两种调用方法,如dim as as class1=new class 调用前面 一个无参数的new过程, 而dim asb as class1=new class(“string”)调用第二个new 过程. 切记,如果一个过程或一个函数只有一种状态,不能这样...
  • byval 和byref区别,今天刚明白。

    千次阅读 2005-01-23 23:20:00
    以前看一本书上,写着VB的两种参数传递方式:byval 和byrefbyval叫做“传值”,想当于把值复制一份到新的变量。而byref叫做传址,相当于把原变量的地址传过去。不过今天我发现,byref的传址,其实并非相当于C++的...
  • 注意,我们演示程序中将混合使用三种方式的URL重写,因此,需要为三种实现分别设置一些URL重写规则: 1、IIRF,对于IIRF,对应于IsapiRewrite4.dll,在相同目录会有一个IsapiRewrite4.ini文件,除了默认一些...
  • 传值和传址

    2020-03-27 16:07:33
    vb中调用函数或过程时,传递参数两种方式:传址和传值。其中VB默认为传址方式,关键字ByRef一般可以省略。 ByRef a As Integer:表示参数a以传址方式传递给函数或过程 Byval a As Integer:表示参数a以传值方式...
  • 压缩文件修复是在阶段完成。首先,在损坏压缩 文件查找恢复记录(参照'rr'命令)。如果压缩文件包含恢复记录,并且 损坏数据部分是连续,而且少于N*512字节(N 处是放入压缩文件恢复块 数字),则...
  • Agent技术应用 ---- Microsoft Agent是微软公司于1997年9...ReadReturn //当完成了上面个动作时候用,可回到标准状态 (接上中的一个用) Reading //一直认真地读,连续状态 (可用) Note: This animation...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    18.2 在 C #代码调用 C++和 VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • C#微软培训资料

    2014-01-22 14:10:17
    18.2 在 C #代码调用 C++和 VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • 列举ASP.NET 页面之间传递种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数规则如下: 1、1、2、3、5、8、13、21、34...... ...
  • 二、程序调用流程: 程序有两种启动方式:1 直接启动主程序,实现资料浏览、编辑功能。2 由 IE 浏览器启动,实现收集资料功能。对于后者启动流程分解如下:1、由自定义 IE 工具按钮、或者右键菜单,分别...
  • 在一小时内学会 C#(txt版本)

    热门讨论 2009-08-19 18:09:37
    两种数据类型: 1. 基本/内建类型 2. 用户定义类型 以下是 C# 内建类型列表: 类型 字节 描述 byte 1 unsigned byte sbyte 1 signed byte short 2 signed short ushort 2 unsigned short int 4 signed ...
  • c#学习笔记.txt

    2008-12-15 14:01:21
    换言之,基接口集是显式基接口、它们的显式基接口(依此类推)的完全可传递的闭包。接口继承其基接口的所有成员。接口成员是通过 I.M 和 I[A] 形式的成员访问和索引访问表达式访问的,其中 I 是接口类型的实例,M 是...
  • rar压缩软件.rar

    2016-02-13 10:52:44
    RAR 是一个让你在命令行模式管理压缩文件控制台应用。RAR 提供压缩、加 密、数据恢复和许多其它此手册描述其它功能。 RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使...
  • 在这里我要说明两点:1、我示例文件总是有A和B分别是用C#和VB,演示图片就用C#那一种,都一样嘛,教程里面代码也是写两种用分割开,大家可以比较一下。2、我写教程时候用都是记事本来编写APS.NET大家...
  •  支持静态链接其它编程语言(如C/C++、汇编等)编译生成静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...
  • 这里的IDE设备包括了IDE硬盘和IDE光驱,第一、第二组设备是指主板上的第一、第二根IDE数据线,一般来说靠近芯片的是第一组IDE设备,而主设备、从设备是指在一条IDE数据线上接的两个设备,大家知道每根数据线上可以接...
  • WinRAR_4.0.exe

    2011-02-04 11:34:33
    包含个掩码,并且所有文件既匹配第一个掩码,也匹配第二个掩码, 较小子集 或者更精确匹配拥有更高优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高优先权。 RAR 命令行语法 ~~~~~~...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

vb中参数传递的两种方式