c#  ref与out的区别

相同点:都是输出参数

不同点:

ref:

1、必须初始化,即:必须赋初始值;

2.有进有出;

3、用在需要被调用的方法修改调用者的引用的时候。

4、是传递参数的地址

out:

1.不需要初始化,即:不需要赋初始值;

2、只出不进;

3、用在需要retrun多个返回值的地方;

4、返回值;

通过代码更直观的看出它们的区别:

ref:

   class Program
{
static void Main(string[] args)
{
//num1,num2,必须赋值
int num1 = ;
int num2 = ;
Exchage(ref num1,ref num2);//调用方法,必须在变量前,必须加ref关键字 }
/// <summary>
/// 使用ref方法,参数必须加ref关键字
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
private static void Exchage(ref int num1,ref int num2)
{
//交换前
Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);
int temp = num1;
num1 = num2;
num2 = temp;
//交换后
Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);
Console.ReadKey();
}

out:

    class Program
{
static void Main(string[] args)
{
int sum;//不需赋值,即使赋值,也会被覆盖
NumSum(,,out sum);
Console.Write(sum);
Console.ReadKey();
}
/// <summary>
/// 求和
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <param name="sum"></param>
private static void NumSum(int num1,int num2,out int sum)
{
sum = num1 + num2; }
}

c# ref与out的区别的更多相关文章

  1. ref和out的区别,值类型和引用类型的使用

    今天刚刚明白ref和out的区别,只限于个人理解如有不同请赐教,谢谢 首先我感觉ref和out是针对于值类型来说,以前一直认为是针对于引用类型看下面的一段代码 1.首先结果 i=0:ints[0]=0 ...

  2. ref和out的区别?

    ref 和out的区别在面试中会常问到: 首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传 ...

  3. ref和out的区别

    ref类型参数是按地址传递,能改变原来的数值.使用ref传参前,变量必须赋值. 带有ref类型参数的函数,不会清空变量,所以离开该函数的时候,所有ref引用的变量可以赋值也可以不赋值. out类型参数 ...

  4. 浅谈C#中ref与out的区别

    在C#这门高级语言中,你是否注意过ref与out的用法?你是否为在调用方法时需要多个返回值呢?不用急,接下来,我们去一起去研究一下这个问题... 其实呢,C#语言中,参数的传递一共有两种方法,值传递和 ...

  5. C#中的ref和out的区别

    转载原地址 http://www.cnblogs.com/gjahead/archive/2008/02/28/1084871.html ref和out的区别在C# 中,既可以通过值也可以通过引用传递 ...

  6. 关于ref与out的区别

    写在最前面 这几天一直在公司接受培训,都是一些基础的知识,同时也乘着这个机会巩固一下自己的基础,基础太重要了.前些时一直看的是多线程方面的知识,接下来我会写一些其他方面的知识,毕竟作为一个实习新人得和 ...

  7. C#中ref和out的区别浅析

    这篇文章主要介绍了C#中ref和out的区别浅析,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢,需要的朋友可以参考下   在C#中通过使用方法来获取返回值时,通 ...

  8. 参数修饰符ref,out ,params的区别

    参数修饰符ref,out ,params的区别 C#中有三个关键字-ref,out ,params,可是这三个之间的区别你都明白了吗? 那么我们就来认识一下参数修饰符ref,out ,params吧, ...

  9. ref与out的区别、冒泡排序、普通排序,以及二分法查询

    一.首先我们先讲一下ref与out的区别和使用方法: 1.ref与out的区别: out:需要在使用前声明变量,分配地址但不能赋值,但是需要在使用中的时候需要初始化(进入方法体中的时候需要先赋值在使用 ...

  10. Spring框架xml配置中属性ref与value的区别

    1.spring批量扫描mybatis的mapper,使用value 2.spring管理mybatis的单个mapper,用的是ref 虽然引用的是同一个bean,但两个对象的属相类型明显不一样,一 ...

随机推荐

  1. idea使用jrebel热部署插件

    首先通过idea下载JReble插件 访问http://idea.lanyus.com/网站 跟着弹出框的步骤走就可以实现了: 在idea中使用tomcat部署项目 不要使用war:使用下面的文件

  2. Linux命令详解1--文件和目录管理之文件查找和比较

    1. 文件查找 1.1 strings命令 ------- 在对象文件或二进制文件中查找可打印的字符串.字符串是4个或更多可打印的任意序列,以换行或空字符结束. strings命令对识别随机对象文件很 ...

  3. schedule与scheduleAtFixedRate之Timer源码分析

    执行Timer任务调度方法有如下几种: 这些方法最后调用的都是这个方法: private void sched(TimerTask task, long time, long period)   这个 ...

  4. VUE+WebPack游戏设计:欲望都市城市图层的设计

  5. 安装kali linux 2017.1 【二、安装VMware-tools 以及相关问题处理】

    一.基本步骤: 1.VMware Workstation菜单栏中,选择“虚拟机”,”安装VMware Tools...“. 2.挂载VMware Tools安装程序到/mnt/cdrom/. mkdi ...

  6. poj2796 Feel good

    题目给出N个数,找出一段区间使得区间最小值乘区间和的值最大 其中N<=100000 分析: 单调队列(单调栈) 求出每个值作为最小值时最长的影响区间,然后枚举判断 这找出最长影响区间应该算是单调 ...

  7. 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令

    1. error_log 含义:指定存储错误日志的文件 语法:error_log <file> [debug|info|notice|warn|error|crit] 缺省:${prefi ...

  8. Struts2源代码查看

    -----------------siwuxie095 Struts2 源代码查看 1.Struts2 的核心过滤器 StrutsPrepareAndExecuteFilter 实现了 Filter ...

  9. 安装了Anaconda之后,Maya运行报错,Python 找不到 Maya 的 Python 模块

    以前Maya用的好好地,结果安装了Anaconda之后,maya启动以后,日志就会报错(如下),只能自主建模,不能打开以前创建的模型,也不能导入fbx,错误提示就是Maya找不到Python模块,在网 ...

  10. 编写高质量代码改善C#程序的157个建议——建议92:谨慎将数组或集合作为属性

    建议92:谨慎将数组或集合作为属性 数组或集合作为属性会引起这样一个问题:如果属性是只读的,我们通常会认为它是不可用改变的,但如果将只读属性应用于数座或集合,而元素的内容和数量却仍旧可以随意改变.如下 ...