参数的传递方式

      使用return语句时,一次只能返回一个值或不返回值到原调用处。若方法A某个语句调用另一个方法B,需要一次能返回两个以上的值时,return语句便无法实现,此时就必须使用下面的第二种和第三种参数传递方式。
      传值调用(Call by value)
      引用调用(Call by reference)
      输出参数(Output parameter)

1、传值调用
       方法A调用另一个方法B时,方法A的实参值会拷贝一份给方法B中对应的形参,由于两者的参数并不占用相同的内存地址,方法B的参数在执行中改变时,并不会影响方法A中的参数值。所以,方法B处理的结果并不会返回方法A而产生副作用,些种参数传递方式称为传值调用。适合要求方法内的结果不影响该方法外的变量情况下使用,具有保护变量不被修改的特性。传值调用中,实参可以为变量、常数或表达式。
      不过,当实参是引用类型对象时,由于引用对象中保存的是地址引用,虽然形参授受的是实参的引用拷贝,但是,它们实际上都指向同一个对象。因此,这时方法体中对于形参的改变也就改变了实参对象。
      如: CallValue(a,7,a+10)
2、引用调用
      方法A调用方法B时,若希望将方法B的执行结果传回给方法A时,使用传值调用无法实现。若能将实参和形参对应的参数设成占用相同的内在地址,此时形参一有改变,对应的实参也跟着改变,便可将方法B执行的结果回传给方法A,此种方式叫引用调用。其操作方式只要在实参和形参每个参数前加上ref,即成为引用调用。但要注意引用调用的实参一定要使用变量,不可为常数或表达式,而且变量必须赋初值才能使用。
 3、输出参数
      输出参数与引用调用的实参和形参都是占用相同的内存地址。两者间的主要差异在于输出参数的参数变量不必赋初值即可作参数传递,而引用参数必须先设定初值才能传递参数。若在调用语句及被调用方法的参数列表的参数前加上OUT,即变为输出参数。

posted on 2007-06-21 14:24  C#家园  阅读(331)  评论(1编辑  收藏  举报