zoukankan      html  css  js  c++  java
  • C#ref和out的使用

    1.用途:
    在C#中通过使用方法来获取返回值时,通常只能得到一个返回值。因此,当一个方法需要多个返回值的时候,就需要用到ref和out
     
    2.概述:
    ref关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所作的任何修改都将反映在该变量中。若要使用ref参数,则方法定义和调用方法都必须显式使用ref关键字
    out关键字会导致参数通过引用来传递。这与ref关键字类似,不同之处在于ref要求变量必须在传递之前进行初始化。若要使用out参数,方法定义和调用方法都必须显示使用out关键字
     
    3.异同点
    同:
    1.都能返回多个返回值
    2.若要使用ref和out参数,则方法定义和调用方法必须显示使用ref和out
    关键字。在方法中对参数的设置和改变将会直接影响函数的调用之处
     
    异:
    1.ref指定的参数在函数调用的时候必须初始化,不能为空的引用。而out指定
    的参数在函数调用时候可以不初始化
    2.out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指
    定的参数不需要
     
    4.口诀:
    ref有进有出,out只出不进
     
    5.实例
     1 //ref传递参数之前必须赋初值
     2   static void Main(string[] args)
     3         {
     4             int a = 10;
     5             int b = 20;
     6             GetValue(ref a, ref b);
     7             Console.WriteLine($"{a}  {b}");
     8             Console.ReadKey();
     9         }
    10         static void  GetValue(ref int x,ref int y)
    11         {
    12             Console.WriteLine($"{x}  {y}");
    13             x = 50;
    14             y = 60;
    15         }
    结果:
     
     1   static void Main(string[] args)
     2         {
     3             //out在这里赋不赋值没影响
     4             //int a = 10;
     5             //int b = 20;
     6             int a, b;
     7             GetValue(out a, out b);
     8             Console.WriteLine($"{a}  {b}");
     9             Console.ReadKey();
    10         }
    11         static void  GetValue(out int x,out int y)
    12         {
    13             //out在方法内必须先赋值再用。
    14             //Console.WriteLine($"{x}  {y}");
    15             x = 50;
    16             y = 60;
    17             Console.WriteLine($"{x}  {y}");
    18         }

     结果:



  • 相关阅读:
    Python实现栈、队列、双端队列
    Redis主从配置、数据持久化、集群
    Redis安装,数据类型及常用命令
    nginx+uwsgi环境部署
    Nginx负载均衡、location匹配
    Nginx安装、多域名访问
    Linux-mysql的备份与恢复
    Linux-mysql主从复制
    Python dumps()的使用
    Python rpush()函数
  • 原文地址:https://www.cnblogs.com/fanjianzhi/p/12842876.html
Copyright © 2011-2022 走看看