C# ref参数

ref参数功能:ref关键字使用参数按引用进行传递,当控制权传递回调用方法时,在方法中对参数所做的任何改变都将直接反映在该变量中



ref参数使用时需注意:

    1.ref和out关键字类似于C中的指针变量一样。可以直接针对这个变量进行操作,而不是针对这个值得Copy进行操作

    2.如果要使用ref参数,则方法定义和调用方法都必须使用ref关键字,传递到ref的参数必须进行初始化,这与out是不同的,out参数在传递前不需要显示初始化

class RefExample   
{
   static void Method(ref int i)  //方法定义时需要使用ref关键字
   {
      i = 44;
   }
  static void Main()
   {
      int val = 0;
      Method(ref val); // 引用这个Method方法时,参数val也需要用ref关键字修饰,不可省略。
                       //如果是out参数  此处可以省略out关键字
   }
}


    3.尽管ref参数和out参数是不同的,但是它们在编译时的处理方式是一致的,所以如果有重载方法一个使用ref重载,另一个使用out重载,那么这两个方法无法进行重载。因为从编译的角度看,这两个方法的代码相同。

class CS0663_Example
{

  public void SampleMethod(ref int i)   //定义的重载方法一,使用ref参数
  {
  }
  public void SampleMethod(out int i)  //定义的重载方法二,使用out参数
  {                                    
                                     // methods that differ only on ref and out"
//编译时无法识别这两个参数。 }}



但是如果这两个方法一个使用ref或者out参数,另外一个不使用这两个参数,则可以进行重载。

class RefOutOverloadExample
{
  public void SampleMethod(int i)  //重载方法一,没有使用ref参数
  {
  }
  public void SampleMethod(ref int i) //重载参数二,使用了ref参数,可以通过编译
  {
  }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值