C#作业使用ref参数交换两个变量的值

本文讨论了在C#中使用ref关键字与C语言中通过地址传递如何实现变量交换的不同,强调了ref允许直接修改实参的值,而非创建副本。作者通过示例代码解释了这一概念。
摘要由CSDN通过智能技术生成

        一般情况下,我们通过中间变量来对两个变量进行交换,但是如果我们通过函数的方法来交换变量,经常会发现交换完后输出的结果没有发生变化,如图。

        我们可以看到虽然在函数中,两个数的值换了,但在最后的输出的结果却没有换,这可能是因为我们只改变了形参的值(可以大致理解为实参的复制体),对实参没有任何影响。

        在C语言中我们通过将变量的地址传给函数,然后通过解引用(*)来直接改变变量的数值。而在C#中我们使用ref将我们的形参转变为实参的另一个名称,所以当我们改变带有ref关键字的参数的数值等同于我们直接改变我们传给函数的变量。所以相关代码如下:

internal class Program
{
    static void Main(string[] args)
    {
        Console.Write("输入第一个数字->");
        int num1 = int.Parse(Console.ReadLine());//可以使用Convert.ToInt32输入
        Console.Write("输入第二个数字->");
        int num2 = int.Parse(Console.ReadLine());
        Com(ref num1, ref num2);
        Console.WriteLine("{0} {1}", num1, num2);
    }
    public static void Com(ref int a, ref int b)
    {
        int temp;
        temp = a;
        a = b;
        b = temp;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值