概论

我认为的形参和实参是这样的,形参是形式上的参量,和“抽象类”的概念差不多,不是实际存在的。不用的时候不占用内存,被调用的时候分配内存,调用结束,释放内存。类似于“抽象类”还有一点就是在抽象类方法和属性被应用的时候需要实例化,然而形参在用的时候必须有实参的传递。实参就是实际存在的东西,它在应用的时候一些具有确定的值,可以通过赋值、输入等一系列动作让实参获得确定值。流向是这样的:“实参——>形参(单向传送)”。

区别

1、形参变量只有在被调用的时候才会分配内存,在调用结束的时候,即刻释放所分配的内存单元。因此,形参只有在函数内部有效,函数调用结束后返回主调函数后则不能再使用形参变量。

2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传送给形参。因此需要预先给用赋值,输入等方法让实参获得确定值。

如下图:

3、实参和形参在数量上、类型上、顺序上应严格一致,否则会发生“类型不匹配”的错误。

4、函数调用中发生的数据传递是单向的,即只能把实参的值传送给形参,而不能把形参的值反向传递给实参。因此在函数调用过程中,形参的值发生改变,而实参的值不会变化。

“值”与“址”

在C#中,形参和实参这里也涉及到了“值传递”和“地址传递”

其中重要的是:

值传递:就是形参改变,不会影响实参的变化。

地址传递:形参的更改影响实参。

传值的过程中:

1)  形参和实参各自占一个独立的存储空间。

2)  形参的存储空间是被调用的时候才分配的,调用开始,系统为形参开辟了一个临时的存储区,然后将各实参之值传递给形参,这时形参就得到了实参的值。

3)  当函数被返回时,临时存储区也被撤销了。

4)  传值的特点:单向传递,即函数中对形参变量的操作不会影响到调用函数中的实参变量。

传地址过程中:

参数是地址,实参和形参共享一个存储单元相当于将实参的地址赋予给了形参,这时候对形参的改变就相当于对实参的改变。此时的参数传递是双向传递。

结语

   在C#的学习中,值与址的传递尤为重要,对后续的软件开发中编码阶段提供了很好的保证,在避免异常的同时也提高了效率。C#没有Java语言简洁,但是在代码方面很是严谨。为后续软件的长期使用打好了基础。以上是本人的一些了解,菜鸟一枚,如有不对的地方,望大神斧正~

  

C#中参数值传递和址传递的更多相关文章

  1. java中方法传入参数时:值传递还是址传递?

    JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...

  2. C语言笔记--传递结构指针以及值传递,址传递

    #include <stdio.h> #include <windows.h> #include <mmsystem.h> #include <string. ...

  3. c++中值传递,址传递,引用传递

    概念详解 1. 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值. 从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出: 当函数内部需要修改参数,并 ...

  4. vue中动态加载组件+开发者模式+JS参数值传递和引用传递

    今天写vue里面通过接口反参动态加载组件时候 跟着同学...学习到了 一.先说说vue 内置组件 component 的用法 component组件可以来专门用来进行组件的切换,使用is来绑定你的组件 ...

  5. ASP.NET MVC5中View-Controller间数据的传递

    使用ASP.NET MVC做开发时,经常需要在页面(View)和控制器(Controller)之间传递数据,那么都有哪些数据传递的方式呢? 本文对于View向Controller中传值共列举了以下几种 ...

  6. Java中的值传递和引用传递

    这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用.指针还是有很大区别. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里 ...

  7. java学习——java按值传递和按址传递

    先复制一个面试/笔试的题: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答案: 是值传递.Java语言的方法调用只支持参 ...

  8. java中的值传递和引用传递有什么区别呀?

    值传递: (形式参数类型是基本数据类型和String):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参 ...

  9. java中的值传递和引用传递区别

    值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响 ...

随机推荐

  1. node.js+express+jade系列一:session的使用

    此出只介绍内存session的配置好使用 1:打开app.js文件,添加下面红色内容,一定要注意位置在router前面 app.use(express.methodOverride()); sessi ...

  2. UVA-11020(BST)

    题意: 给n个点,一个点(x,y)有优势时满足不存在点(fx,fy)使得fx<x,fy<=y或fx<=x,fy<y;问当前有多少个有优势点; 思路: 学习BST的入门题,代码是 ...

  3. OpenAL播放pcm或wav数据流-windows/ios/android(一)

    OpenAL播放pcm或wav数据流-windows/iOS/Android(一)   最近在研究渲染问题,本文采用openal做pcm和wav数据流播放,并非本地文件,demo是windows的,i ...

  4. bzoj 4773: 负环 floyd

    题目: 对于边带权的有向图,找出一个点数最小的环,使得环上的边权和为负. 2 <= n <= 300. 题解: 我们可以考虑从小到大枚举答案. 然后每次枚举更大的答案的时候就从当前的较小的 ...

  5. bzoj 2535 & bzoj 2109 航空管制 —— 贪心+拓扑序

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2535 https://www.lydsy.com/JudgeOnline/problem.p ...

  6. 深入理解javascript中的立即执行函数

    这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包住业务代码,使用jquery时比较常见,需要的朋友可以 ...

  7. Excel用vlookup方法匹配数据

    (1) VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值.它的基本语法为:     VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找) ...

  8. 51单片机的TXD、 RXD 既接了 232 又接了 485芯片 ,会导致通信失败!

    51单片机的TXD. RXD 既接了 232 又接了 485 ,会导致通信失败! 下面是绘制电路板用的部分电路图: 通信现象: 1.我使用了USB-232的下载模块,把它接到P4上,发现单片机只能发送 ...

  9. samba server导出/datasmb/目录;samba client挂载/data/至本地的/mydata目录;本地的mysqld或mariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常 存储数据;

    实验环境:CentOS7 主机(mini2) :172.16.250.247  主机名::localhost 客户端(mini3):172.16.253.99  主机名:pxe99 #主机:配置文件的 ...

  10. VMware VirtualCenter Server service fails to start with the vpxd.log error: ODBC error: (28000) (1017688)

    Symptoms If you experience an ungraceful shutdown of the database (for example, because of a power o ...