A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 shangxin 于 2014-3-24 10:23 编辑

在传参时,实参和形参怎么调用,是如何实现的

3 个回复

倒序浏览
这个视频里面有,在不使用任何关键字的时候,会首先在栈中开辟一块内存,然后形参将实参复制一份。在方法中进行运算。所以方法中改变参数值是,程序返回调用方时,调用方的参数不会发生改变。
ref关键字传递参数是按地址传递,调用方和方法使用相同的内存单元,所以如果方法中如果改变参数值,则当程序返回调用方的时候,调用方的参数值已经改变。
        out和ref关键字的不同在:于使用ref关键字时,要求在使用前必须赋值,而方法中可以赋值也可以不付值。而使用out关键字时使用前可以不赋值,而调用方法返回之前必须赋值。普通传参在使用前必须赋值,但是在方法中赋值并不改变方法调用前的值。
回复 使用道具 举报
C#中有三种传递方式
1.单向值传递(用于将实际参数拷贝一份给形参,向函数内部传值,函数返回时,形式参数被回收)
2.用ref关键字传递(用于双向传递,类似于C++中的双向指针,形参与实参互相指,使用之前先赋值)
3.用out关键字传递(用于被调函数向调用者传值,单向,形参指向实参,调用者可以不给实参赋值,但是函数返回前形参必须必须赋值)

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
       形参:在定义函数中指定的参数就是形参,在未出现函数调用时,他们并不占内存中的存储单元,只有在发生函数调用时,函数中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。   
       实参:实参可以是常量、变量和表达式,但要求有确定的值。在调用时将实参的值赋给形参。在内存中,实参单元和形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留原值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马