C# 中方法参数的传递
来源:互联网 发布:非农数据与黄金走势 编辑:程序博客网 时间:2024/05/07 12:40
我们知道,使用参数传递给方法有两种传递方式,一种是引用传递,另一种则是值传递。
变量在通过引用方式传递给方法时,传递给方法的就是这个变量,因此在被调用的方法内部对该变量内容进行修改,方法退出后修改的变量值依然有效。而变量通过值传递给方法时,传递的就是该变量的一个副本,在方法内部对其修改当方法退出后该变量的原值并没有被修改。
如果变量是复杂的数据类型,用值传递的方式则会使效率降低,原因在于会复制大量的数据副本。
在C#中,没有特殊申明时,所有的参数传递方式都是值传递方式。那么明明有些参数传递给方法后变量的值是会被修改的,例如类、数组作为参数传递时。为什么说是值传递呢?
这里在理解上需要注意下,在传递的时候我们传递的是类的实例名称或数组名称,变量本身就是引用类型,所以传递的是类或数组的引用,把这个引用当做一个值传递给方法,在被调用的方法中复制的正是引用的副本,所以在方法内部虽然操作的是引用的副本,其实操作的是同一个对象,修改的新的值会反射在原始对象中。
声明引用传递:
声明引用传递的关键字:ref 、out
如前面所讲的,参数通过值传递是默认,有时候也需要强制使用引用传递。这时候就需要使用ref关键字修饰变量。如果把一个变量传递给方法,并且该变量前带有ref关键字,就说明,被调用的方法中对该变量的值做修改会影响到变量的原值。有一点需要注意,该变量在传递之前是需要初始化的。
static void Function(int[] ints, ref int value) { ints[0] = 100; value = 100; }在调用该方法时候也需要加ref
Function(ints,ref i);有时候我们需要在C#中也能像C,C++的方法一样,函数能够在一次调用中输出多个值,这就需要使用输出参数,只要把输出的值赋予通过引用传递给方法的变量即可。
可是C#规定,参数在传递给方法之前必须要初始化先,哪怕传递之前的初始化是无意义的,但这样做没有必要,有时候可能会使得可读性变差甚至引起混乱。编译器使用out关键字来初始化参数变量,在传递给方法的输入参数前面加上out关键字,方法在调用之前可以不需要初始化。在方法内部修改参数变量的值,会被保存下来。在调用该方法时候也需要加out关键字。
static void Function(out int value){ value = 100;}
int i;Function(out i);
- C# 中方法参数的传递
- C#中方法参数的引用传递、值传递。
- C#中向线程传递参数的方法
- C#中方法中的参数传递
- C#中方法参数传递机制
- 方法中参数的传递
- [C#基础]理解方法的参数传递
- c#给线程传递参数的方法
- C#中的方法的参数传递。
- c#中三种传递参数的方法
- C#中参数传递
- c#调用存储过程时 SqlParameter 中传递参数时ref参数的设置方法
- C#中传递参数的类型
- C#中多线程的参数传递
- C#中参数传递的方式
- C#中关于crystal report报表中控件参数传递的快捷方法
- C#的参数传递
- URL中传递URL参数的方法
- x264结构体
- andengine中的屏幕事件
- V4L2编程实例
- 建一张没有id属性的表,hibernate的映射文件要怎么写
- 算法入门之AC自动机
- C# 中方法参数的传递
- java计算天干地支 十二生肖
- .NET生成常用16、32位MD5加密的两种方法
- eclipse修改默认工作空间
- 130825周赛
- java学习课堂笔记
- java中filter与interceptor的区别
- 认识状态模式
- Service组件 总结 + 绑定理Service三种实现方式 Messager + Binder + AIDL