C#学习笔记------参数
一、形参
形参是本地变量,它声明在方法的参数列表中,而不是方法体中。
二、实参
当代码调用一个方法时,形参的值必须在方法的代码开始执行之前被初始化。
1.用于初始化形参的表达式或变量称作实参。
2.实参位于方法调用的参数列表中。
3.每一个实参必须与对应形参的类型相匹配,或是编译器必须能够把实参隐士转换为那个类型。
当方法被调用的时候,每个实参的值都被用于初始化相应的形参,方法体随后被执行。
三、值参数
使用值参数,通过将实参的值复制到形参的方式把数据传递给方法。方法被调用时,系统做如下操作。
1.在栈中为形参分配空间。
2.将实参的值复制给形参。
值参数的实参不一定是变量。它可以是任何能计算成相应数据类型的表达式。
在把变量用作实参之前,变量必须被赋值(除非是输出参数)。对于引用类型,变量可以被设置为一个实际的引用或null。
下图说明了实参和形参在方法执行的不同阶段时的值,它表明以下3点。
1.在方法被调用前,用作实参的变量a2已经在栈里了。
2.在方法开始时,系统在栈中为形参分配空间,并从实参复制值。
1)因为a1是引用类型的,所以引用被复制,结果参数和形参都引用堆中的同一个对象。
2)因为a2是值类型的,所以值被复制,产生了一个独立的数据项。
3.在方法的结尾,f2和对象f1的字段都被加上了5。
1)方法执行后,形参从栈中弹出。
2)a2,值类型,它的值不受方法行为的影响。
3)a1,引用类型,但它的值被方法的行为改变了。