ref与out参数的使用--学习笔记


 如果为一个参数(形参)附加了ref关键字作为前缀,那么参数就会成为实参的一个别名(或者对实参的一个引用),而不再是实参的一个副本。
 使用ref参数时,向参数应用的任何操作,都会同样应用于实参,因为参数(形参)和实参引用的是同一个对象。向一个ref参数传递一个实参时,
 实参也必须附加ref关键字作为前缀。
 下面给出一个使用了ref关键字的例子:
  static void DoWork(ref int param)   //使用了ref
  {
 param++;
  }
  static void Main()
  {
 int arg=15;
 DoWork(ref arg);
 Console.WriteLinr(arg);   //将输出16
  }
 由于DoWork方法传递的是对原始实参的一个引用,而不是传递一个副本,所以使用这个引用进行的任何修改都会反映到原始实参中。因此,输出的是16。
  “变量使用前必须赋值”这个规则同样适用于ref参数。 如下例:
  static void Dowork(ref int param)
  {
 param++;
  }
  static void Main()
  { 
 int arg;
 DoWork(ref arg);
 Console.WriteLine(arg);
  }
 其中,arg没有初始化,代码将无法编译,所以出错。因为DoWork中的param++实际上是arg++;而只有当arg有一个已定义的值的时候,arg才是允许的。
 而如果用out参数,则可以有方法本身来初始化参数,向其传递一个未初始化的实参。如下例:
  static void DoWork(out int param)   //使用了ref
  {
 param=15;
  }
  static void Main()
  {
 int arg;
 DoWork(out arg);
 Console.WriteLine(arg);   //将输出16}

ref和out修饰符可以同时应用于引用类型和值类型的参数。效果是完全一样的。参数将成为实参的一个别名。如果使参数重新引用一个新建的对象,那么实际是让实参重新引用新建的对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值