C#中参数值传递和址传递
2015-11-10 14:39
591 查看
概论
我认为的形参和实参是这样的,形参是形式上的参量,和“抽象类”的概念差不多,不是实际存在的。不用的时候不占用内存,被调用的时候分配内存,调用结束,释放内存。类似于“抽象类”还有一点就是在抽象类方法和属性被应用的时候需要实例化,然而形参在用的时候必须有实参的传递。实参就是实际存在的东西,它在应用的时候一些具有确定的值,可以通过赋值、输入等一系列动作让实参获得确定值。流向是这样的:“实参——>形参(单向传送)”。区别
1、形参变量只有在被调用的时候才会分配内存,在调用结束的时候,即刻释放所分配的内存单元。因此,形参只有在函数内部有效,函数调用结束后返回主调函数后则不能再使用形参变量。2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传送给形参。因此需要预先给用赋值,输入等方法让实参获得确定值。
如下图:
3、实参和形参在数量上、类型上、顺序上应严格一致,否则会发生“类型不匹配”的错误。
4、函数调用中发生的数据传递是单向的,即只能把实参的值传送给形参,而不能把形参的值反向传递给实参。因此在函数调用过程中,形参的值发生改变,而实参的值不会变化。
“值”与“址”
在C#中,形参和实参这里也涉及到了“值传递”和“地址传递”其中重要的是:
值传递:就是形参改变,不会影响实参的变化。
地址传递:形参的更改影响实参。
传值的过程中:
1) 形参和实参各自占一个独立的存储空间。
2) 形参的存储空间是被调用的时候才分配的,调用开始,系统为形参开辟了一个临时的存储区,然后将各实参之值传递给形参,这时形参就得到了实参的值。
3) 当函数被返回时,临时存储区也被撤销了。
4) 传值的特点:单向传递,即函数中对形参变量的操作不会影响到调用函数中的实参变量。
传地址过程中:
参数是地址,实参和形参共享一个存储单元相当于将实参的地址赋予给了形参,这时候对形参的改变就相当于对实参的改变。此时的参数传递是双向传递。
结语
在C#的学习中,值与址的传递尤为重要,对后续的软件开发中编码阶段提供了很好的保证,在避免异常的同时也提高了效率。C#没有Java语言简洁,但是在代码方面很是严谨。为后续软件的长期使用打好了基础。以上是本人的一些了解,菜鸟一枚,如有不对的地方,望大神斧正~相关文章推荐
- C# 懒人常用异步方法
- C# winform窗体在桌面右下角显示(任务栏上方)
- 利用dotm模板动态添加web报表数据
- c# winform窗体关闭事件
- c#多表连接查询配合case和then使用
- 《CLR var C#》读书笔记-CLR的执行模型
- c# 中的serializableAttribute
- C#判断三角形的类型
- (C#:Socket)简单的服务端与客户端通信。
- 初识C#
- C#Winform水晶报表常用实例
- C# 设置word文档页面大小
- 常见的C#窗体间的传值(二)
- C# 枚举,传入int值返回string值
- 常见的C#窗体间的传值(一)
- C# 设置word文档页面大小
- C# ListView 列宽随窗体的宽度改变
- 【工具】C# DataTable导出到Excel
- c# webBrowser下载图片
- 初次接触C#