ref,out的作用和好处

ref和out这两个关键词可以用来传参,他们的区别仅仅是在c#里面的。。而他们在clr里面是没有区别的。

下面是写了个例子,展示了怎么去用这两个关键词传参。已经他们的好处

首先定义一个类,类里面写了几个方法:

 public  class Base
    {
        //耗资源
        public int World( int x)
        {
            x = 10;
            return x;
        }
        //省资源
        public int Hellow(out int x)
        {
            x = 10;
            return x;
        }
        //省资源
        public int HellowWorld( ref int x)
        {
            x = 10;
            return x;
        }

    }

一下是对这几个方法的调用

  public Form1()
        {
             InitializeComponent();

             Base ba = new Base();

             int i;//可以不初始化。因为out
             MessageBox.Show(ba.Hellow(out i).ToString());

             int j=0;//必须初始化,因为ref
             MessageBox.Show(ba.HellowWorld(ref j).ToString());

             int k = 0;//普通写法,耗资源
             MessageBox.Show(ba.World(k).ToString());
            //上面这个方法类写法和下面这个一样
             //MessageBox.Show(ba.World(0).ToString());
        }

我在代码里标注了使用ref,out传参比另一种平时使用的方式传参更省资源。原因是:

平时经常使用的那个传参,会在线程栈中分配一块内存,来存储传进来的参数,使用结束后,还会对它调用垃圾处理机制。所以是比较耗资源的

而ref和out需要在方法外声明变量,是因为,这两种方式传进去的实际上是变量的地址。方法内部通过变量的地址,更改了变量的值。

我觉得,在修改变量本身时,用ref和out肯定是比较省资源的。。。。但是,我仔细想了一下,如果我想把这个变量值传给另一个变量,

不管用ref,out还是平时经常用的写法。

你都至少要写两个变量。。。。。

时间: 2024-11-06 17:41:13

ref,out的作用和好处的相关文章

java泛型的作用和好处

转载于:https://blog.csdn.net/u012760183/article/details/52092692 之前参加面试的时候遇到面试官问泛型的作用,只是说了大概自己的理解, 在此转载记录一下,加深印象 泛型好处: 泛型简单易用 类型安全 泛型的主要目标是实现java的类型安全. 泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一个高的程度上验证这个类型 消除了强制类型转换 使得代码可读性好,减少了很多出错的机会 Java语言引入泛型的好处是安全简单.泛型的好处是

java 接口的作用和好处

1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意义很疑惑.不知道接口到底是有什么作用,为什么要定义接口. 好像定义接口是提前做了个多余的工作.下面我给大家总结了4点关于JAVA中接口存在的意义: 1.重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Jav

ref关键字的作用

ref关键字使参数按引用传递.其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中. 就是说,在调用方法的参数中使用ref关键字可以使得变量能够改变. ref和out都是引用地址ref可以理解为引用传值,一个构造器或方法里含有ref参数,任何使用这个构造器或方法的地方操纵的都是同一个变量,ref所修饰的变量,也就是说.和你定义全局变量或者static变量差不多的[效果]. 以下是一个使用ref和不使用的区别. 不使用:委托在前面讲了 using System; us

Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方

先说明一下好处有哪些:1,如果你想 new 一个空的 List ,而这个 List 以后也不会再添加元素,那么就用 Collections.emptyList() 好了.new ArrayList() 或者 new LinkedList() 在创建的时候有会有初始大小,多少会占用一内存.每次使用都new 一个空的list集合,浪费就积少成多,浪费就严重啦,就不好啦2,为了编码的方便.比如说一个方法返回类型是List,当没有任何结果的时候,返回null,有结果的时候,返回list集合列表.那样的话

JAVA枚举的作用与好处

枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组. Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征. 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例. 2.所有枚举值都是public , stati

C++中的静态数据成员的作用与好处

静态成员如果有n个同类的对象,那么每一个对象都分别有自己的数据成员,不同对象的数据成员各自有值,互不相干.但是有时人们希望有某一个或几个数据成员为所有对象所共有.这样可以实现数据共享. 在前面介绍过全局变量能够实现数据共享. 如果在一个程序文件中有多个函数,在每一个函数中都可以改变全局变量的值,全局变量的值为各函数共享.但是用全局变量的安全性得不到保证,由于在各处都可以自由地修改全局变量的值,很有可能偶一失误,全局变量的值就被修改,导致程序的失败.因此在实际工作中很少使用全局变量. 如果想在同类

下蹲运动的好处与练习方式

每天只需5-15分钟的练习就可以. 双脚的血液循环顺畅,将促使全身的血液大循环亦处于良好状态,你就可以延缓衰老. 下蹲运动能够治病强身的原理 人蹲下去,身体变成三折叠,被挤压的血管收缩,气血冲向全身未被挤压的血管,迫使它们扩张.鼓起来:人一站起来,全身气血又冲向原来被挤压的血管,为它们灌满血液:在这样的一蹲一起.一压一放.一冲一回的气血往复运动中,就像涮瓶子一样,使全身血管得到了反复冲洗,使血管软化.加快血液循环和体内的新陈代谢.激活免疫系统,增加了高密度胆固醇.灵敏了压力感受器.把一些有害.有

黑马程序员_浅谈out参数、ref参数和可变参数

1.out参数 out关键字会导致参数通过引用来传递,通俗点说,就是往外传值的. out参数的作用:用于以内部变量为外部变量赋值的,out一般适用于某个方法不只是使用return返回单个值,而是需要有多个返回值的情况. out参数的使用需要注意以下几点:  1)out参数传递的变量在传递之前不需要对其进行初始化. 分析:在调用方法之前,对out参数传递的变量只需声明,可以赋值也可以不赋值,不过反正都是要在调用时被覆盖掉,所以大可不必赋值,因为赋值了虽然不会报错,但却根本也没有用处,没必要多此一举

c# ref和out参数

向方法传递参的时候,对应的参数通常会用实参的拷贝来初始化.就是说随便在方法内部进行怎样的修改,都不会影响作为参数传递的变量的原始值. 通过上面的例子我们可以看出来,如果一个方法的参数是引用类型,那么使用哪个参数来进行任何修改都会改变传入的参数所引用的数据,关键在于虽然引用的数据发生了变化,但是传入的参数是没有变的.虽然可以通过参数来修改实参引用的对象,但是不可以修改实参的本身.但是在一些情况下,我们希望方法能够实际的修改一个参数,所以c#给我们提供了ref和out关键字. 使用ref参数,作用参