博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十、传值,传引用(ret和out区别
阅读量:4353 次
发布时间:2019-06-07

本文共 1311 字,大约阅读时间需要 4 分钟。

 定义:

      ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

      out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。

 

传值:

  传实际的数据进入,不会改变传入值;p=9,x=8;即X的值不会受P影响,给P赋一个新值并不会改变X的内容,因为P和X存在于内存中不同的位置。

class Test

{
  static void Main(string[] args)
  {
    int x=8;
    Fo(x);
    Console.WriteLine("x={0}", x);
  }
  static void Fo(int p)
  {
    p = p + 1;
    Console.WriteLine("p={0}", p);
  }
}

运行结果为:p=9,x=8;

传引用:ref修饰符在写函数和调用函数时都一定要出现

  如果在函数FO中改变P的值,则X的值也会随之改变

static void Main(string[] args)

{
  int x = 8;
  Fo(ref x);
  Console.WriteLine("x={0}", x);
}

static void Fo(ref int p)

{
  p = 10;
  p = p + 1;
  Console.WriteLine("p={0}", p);
}

运行结果:P=11,X=11;

 

ref修饰符主要应该于实现交换的方法中

static void Swap(ref string a, ref string b)

{
  string temp = a;
  a = b;
  b = temp;
}
static void Main()
{
  string x = "Hello";
  string y = "World";
  Swap(ref x, ref y);
  Console .WriteLine (x);
  Console.WriteLine(y);

}

运行结果:World Hello

out修饰符:out修饰符在写函数和调用函数时都一定要出现

out修饰符与ref修饰符非常相似,除了以下两点为:

一,在调用函数时不需要赋值

二,在函数退出前必须赋值。

总结:

1、传引用ref 调用方法和函数都需要带ref标志

2、传ref引用会影响传入的参数值

3、传值不会修改传入参数值

4、传引用ref和out都是用于当控制权传递回调用方法时(传入变量中并且需要返该变量中时),方法中对参数所做的任何更改都将反映在该变量中

5、ref传入时候需要初始化,out不需要

6、out在函数结束前必须赋值

转载于:https://www.cnblogs.com/zhangne/p/11540957.html

你可能感兴趣的文章
FIR滤波器的FPGA实现方法
查看>>
CABasicAnimation
查看>>
Codeforces 916 二进制1数目构造(阅读理解) 最小生成树1-N路径质数构造
查看>>
启动Eclipse时发生An internal error occurred during: "Initializing Java Tooling"错误
查看>>
Qt:禁止qDebug的输出
查看>>
word、pdf、ppt 转为图片
查看>>
000 关于IDEA的基本环境配置以及快速使用(git拉载程序,Jdk安装,tomcat部署,应用程序打包运行)...
查看>>
20162302 《程序设计与数据结构》第八周学习总结
查看>>
web容器 web服务器 servlet/jsp容器 之间的区别和关系
查看>>
78,90,Subsets,46,47,Permutations,39,40 DFS 大合集
查看>>
在Static控件上显示图片
查看>>
ORACLE 数据库基本参数查询
查看>>
iOS - CAReplicatorLayer 的运用
查看>>
iOS 8自动调整UITableView和UICollectionView布局
查看>>
哈佛精神
查看>>
c++
查看>>
微信开发
查看>>
《代码整洁之道》
查看>>
基于框架的应用系统开发的质量属性
查看>>
noip普及组考纲+样题合集——初级篇(OIer必看)
查看>>