关于ref关键字的使用

本文详细介绍了C#中的ref关键字,包括其常规用法,如何创建和使用局部ref变量,ref作为方法返回值的处理,以及ref与条件操作符? :的结合使用。通过实例展示了ref如何影响变量的副本以及如何在不同场景下进行引用传递。
摘要由CSDN通过智能技术生成

1. ref常规用法

正常情况下,一个整型变量,如(int x=5),在通过方法参数调用时,如调用方法M(x,x*2),则会产生2个x的副本,如下所示:

方法参数变量存储示意图

而通过带ref的方法参数调用时,不会产生副本。如果在方法中,修改了ref的参数,那么此改变也会影响到原调用的变量。下面是一个例子:

  static void Main(string[] args)
    {
   
      int x = 5;
      IncreAndDouble(ref x, ref x);
      Console.WriteLine(x);
    }

   private static void IncreAndDouble(ref int x1, ref int x2)
    {
   
      x1++;
      x2 *= 2;
    }

因为都是ref参数,所以x、x1、x2都是指向同一存储空间,输出为 12

2. 局部Ref

在C# 7.0中,ref得到增强,允许定义局部ref变量,用来共享某个已存在变量的空间,如:
int x=10;
ref int y=ref x;
很多类型都能作为ref局部变量的初始化,如数组元素。
一个使用ref局部变量修改数组元素的例子:

 var arr = new (int x, int y)[10];//定义10个元组类型的数组
  for (int i = 0; i < arr.Length; i++)
  {
   
    arr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值