zoukankan      html  css  js  c++  java
  • C#基础(四)——ref与out的区别

    1.ref传进去的参数必须进行初始化,out不必
    int i;
    SomeMethod( ref i );//语法错误
    SomeMethod( out i );//通过

    2.ref传进去的参数在函数内部可以直接使用,而out不可;
    public void SomeMethod(ref int i)
    {
    int j=i;//通过
    //...
    }
    public void SomeMethod(out int i)
    {
    int j=i;//语法错误

    }

    3.ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值。
    rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数
    值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就
    是两个的区别,或者说就像有的网友说的,rel是有进有出,out是只出不进。
    4.out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调
    用者的引用的时候。
    总结:
    相同点:两者都是按地址传递的,使用后都将改变原来参数的数值。
    不同点:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把
    一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须离开函数体之前初始化一次。

    ref必须先在函数外部初始化才能完成引用;out是内部为外部赋值,所以在外部不需要初始化。

    ref是内部对外部的值进行改变;而out则是内部为外部变量赋值,可以返回多个值。

     

  • 相关阅读:
    第一次团队作业
    第二次结对作业
    动态代理与AOP
    笔试题
    java并发面试题(带答案)
    线程问题——同步和死锁
    java线程的方法
    java实现多线程的方法
    使用java闭锁实现并发
    Java多线程——同步问题
  • 原文地址:https://www.cnblogs.com/jianfeng1201/p/3939491.html
Copyright © 2011-2022 走看看