关于C#的引用参数传递

关于C#的引用参数传递

C#的初学者都会遇到方法的参数传递问题,本文就引用(地址)传递与大家分享一下我的心得体会。下面是一个例子,包括两段程序代码:
每段代码的主要功能是求两个整数的乘积,其中有两个方法(可写在同一个类中),一个是程序入口方法Main,另一个是求乘积的方法Multiply。

//程序1——Multiply的参数为值传递方式
using System;
class Program
{
    static int Multiply(int x, int y)
    {
        y += 2;
        return x * y;
    }

    static void Main()
    {
        int a = 2;
        int b = 5;
        Console.WriteLine("调用Multiply的计算结果为{0}。", Multiply(a, b));
        Console.WriteLine("直接相城的计算结果为{0}。", a * b);
    }
}

以上程序运行结果为:
这里写图片描述
由运行结果可见,经过Multiply的调用后,Main方法中的b并没有改变。也就是说Main中的a,b与Multiply中的x,y根本就是互不相同的变量,它们只是在Main方法中调用Multiply时执行了一次x=a,y=b的赋值,之后就各不相干了。
接下来看第二段代码:

//程序2——Multiply的参数为引用传递方式,注意Multiply参数表中y前面的ref以及Main中Multiply调用时b前的ref
using System;
class Program
{
    static int Multiply(int x, ref int y)
    {
        y += 2;
        return x * y;
    }

    static void Main()
    {
        int a = 2;
        int b = 5;
        Console.WriteLine("调用Multiply的计算结果为{0}。", Multiply(a, ref b));
        Console.WriteLine("直接相城的计算结果为{0}。", a * b);        
    }
}

程序2的运行结果是:
这里写图片描述
由运行结果可见,此次经过Multiply的调用后,Main方法中b的值发生了改变。说明Multiply的第二个参数改为引用方式后,b和y之间建立了一种联系,其结果使得y与b等同了。其实它们本质上都是指向了同一内存地址,也可以理解为y和b是名称不同的同一变量。

那么,何时需要引用参数传递呢?比如,你需要在方法1中调用方法2,方法1中变量x会作为参数传递给方法2进行处理,并且你希望方法2处理后在方法1的后续过程中保持方法2对x的处理结果,就要将x作为引用参数进行传递。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值