1、out必须在方法中为其赋值,在调用的时候必须在变量的前面加上out关键字,侧重输出。

2、ref修饰方法的参数,在调用的时候必须在变量的前面加上ref关键字,可以修改其值也可以不修改,侧重修改。

3、out和ref只能传递变量不能传常量,传递的时候不是传递变量的值,而是传变量的地址。

3、out在传递之前可以不赋初始值,因为在方法里面肯定会为out赋值,ref在传递之前必须要有值,因为在方法中有可能会用到参数的值。

static void TestOut(out int i)

{

   i=;//out中一定要对变量赋值

}

static void TestRef(ref int i)

{

  i+=;//ref中可以对变量赋值也可以不赋值

}

staitc void Main(string[] args)

{

   int i=;

   TestOut(out i);

   //TestOut(out 12);这样就报错,只能传变量不能传常量

   Console.WriteLine(i);

   int[] arr={,,,,};

   int min=;

   int max=;

   GetMaxAndMin(arr,out max,out min);

   Console.WriteLine(min+":"+max);

   int num;

   //TestRef(ref num);//这样就有可能报错,因为方法中可能会用到参数的值,而在ref里面没有对变量赋值。

   //TestOut(out num);//这样不会报错,因为out里面一定会对变量赋值。

   //Console.WriteLine(num);

}

static void GetMaxAndMin(int[] arr,out int max,out int min)

{

    //排序 Array.Sort(arr);

    //冒泡排序

    for(int i=;i<arr.Length-;i++)

    {

       for(int j=;j<arr.Length--i;j++)

       {

          if(arr[j]>arr[j+])

          {

               int temp=arr[j];

               arr[j]=arr[j+];

               arr[j+]=temp;

          }

       }
} max=arr[arr.Length-]; min=arr[]; }

附图(理解out和ref只是传递的地址而不是值):

注:以上内容均属软谋原创,转载请注明出处。

C#中out和ref使用的更多相关文章

  1. react native中state和ref的使用

    react native中state和ref的使用 因props是只读的,页面中需要交互的情况我们就需要用到state. 一.如何使用state 1:初始化state 第一种方式: construct ...

  2. .NET框架- in ,out, ref , paras使用的代码总结 C#中in,out,ref的作用 C#需知--长度可变参数--Params C#中的 具名参数 和 可选参数 DEMO

    C#.net 提供的4个关键字,in,out,ref,paras开发中会经常用到,那么它们如何使用呢? 又有什么区别? 1 in in只用在委托和接口中: 例子: 1 2 3 4 5 6 7 8 9 ...

  3. [转] C#中out和ref之间的区别

    gskcc 的原文地址 C#中out和ref之间的区别 首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个 ...

  4. C#中out和ref之间的区别【转】

    首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所 ...

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

    首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所 ...

  6. C#中引用(ref关键字)参数

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 函数的参 ...

  7. C#中in,out,ref,params的作用和区别

    ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键 ...

  8. Java中替代C# ref/out 关键字方案:

    刚学习Java不久,今天遇到一个问题,需要在方法中修改传入的对象的值,确切的说是需要使用一个方法,创建一个对象,并把其引用返回,熟悉C#的我的第一反应就是C#中的ref/out关键字,结果发现Java ...

  9. C# 中out,ref,params参数的使用

    C#中有三个高级参数,分别是out,ref,params:   1.out参数 方法使用return 只能返回一个值(一个数值或一个指针值),out参数可以帮助我们在一个方法中返回多个值,不限类型. ...

随机推荐

  1. 【转】Java 内存模型及GC原理

    一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率,才能 ...

  2. 【转】JVM 基础知识

    几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看,又添加了一些东西.突然发现,基础真的很重要.学习的过程是一个由表及里,再由里及表的过程,所谓的“温故而知新”.而真正能走完这个轮回的人,也就能 ...

  3. MVC 路由规则

    一.路由规则说明 先来看MVC中的默认路由的说明 "{controller}/{action}/{id}", // URL with parameters 对于Url /Home/ ...

  4. 用Eclipse和GDB构建ARM交叉编译和在线调试环境

    我们在 Linux 主机中搭建我们的开发环境,使用 Ubuntu 10.04 LTS 为例. 搭建应用开发环境   安装 JRE Eclipse 依赖于Java 环境,所以必须先安装 JRE 或 JD ...

  5. 五指CMS发布,主打高性能

    近日,五指CMS正式发布.给沉静已久的国内 CMS 行业引来不少的关注.五指CMS由原PHPCMS v9的负责人王参加主导开发.我们可以看到,由于移动互联网以及大数据的崛起,个人站长市场的逐渐减少,国 ...

  6. 每个android项目都应该使用的android 库

    http://blog.teamtreehouse.com/android-libraries-use-every-project A good developer knows to never re ...

  7. 无法识别的属性“targetFramework”。请注意属性名称区分大小写。错误分析以及解决方案

    我的配置文件中是这样写的,<compilation debug="true" targetFramework="4.0"> 发布在iis上出现了 “ ...

  8. 查看当前正在被执行的sql

    由于在公司服务器上在某个时段查询某个sql执行比较慢,由来查询当前正在被执行的sql Select t.text,SUBSTRING(t.text, (r.statement_start_offset ...

  9. SmartForms 小技巧

    1.添加空行,保证每一页有固定的打印的表格行数 上图,每页最多打印13行,数据只有11行,自动添加两个空行补齐 代码如下“ "定义变量: data: l_blank type i. &quo ...

  10. cocos2d-x 2.0 拖尾效果分析

    转自:http://game.dapps.net/gamedev/game-engine/7281.html 在Cocos2d-x中,拖尾效果有一个专门的类CCMotionStreak来实现.下面我们 ...