zoukankan      html  css  js  c++  java
  • 十、传值,传引用(ret和out区别

     定义:

          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在函数结束前必须赋值

  • 相关阅读:
    什么是Spring Cloud Stream?
    线程池的好处:
    能用HTML/CSS解决的问题就不要使用JS
    功能--web端测试
    Redis 主从复制
    Redis 发布订阅
    Redis 事务
    Redis 持久化
    Redis 安装
    Mybatis Plus 多租户
  • 原文地址:https://www.cnblogs.com/zhangne/p/11540957.html
Copyright © 2011-2022 走看看