• c# ref与out的区别


     c#  ref与out的区别

    相同点:都是输出参数

    不同点:

    ref:

    1、必须初始化,即:必须赋初始值;

    2.有进有出;

    3、用在需要被调用的方法修改调用者的引用的时候。

    4、是传递参数的地址

    out:

    1.不需要初始化,即:不需要赋初始值;

    2、只出不进;

    3、用在需要retrun多个返回值的地方;

    4、返回值;

    通过代码更直观的看出它们的区别:

    ref:

     1   class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5           //num1,num2,必须赋值
     6             int num1 = 10;
     7             int num2 = 5;
     8             Exchage(ref num1,ref num2);//调用方法,必须在变量前,必须加ref关键字
     9         
    10         }
    11   /// <summary>
    12         /// 使用ref方法,参数必须加ref关键字
    13         /// </summary>
    14         /// <param name="num1"></param>
    15         /// <param name="num2"></param>
    16         private static void Exchage(ref int num1,ref int num2)
    17         {
    18             //交换前
    19                 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);
    20                 int temp = num1;
    21                 num1 = num2;
    22                 num2 = temp;
    23                 //交换后
    24                 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);
    25                 Console.ReadKey();
    26         }
    View Code

    out:

     1    class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5         int sum;//不需赋值,即使赋值,也会被覆盖
     6             NumSum(10,5,out sum);
     7             Console.Write(sum);
     8             Console.ReadKey();
     9         }
    10    /// <summary>
    11         /// 求和
    12         /// </summary>
    13         /// <param name="num1"></param>
    14         /// <param name="num2"></param>
    15         /// <param name="sum"></param>
    16         private static void NumSum(int num1,int num2,out int sum)
    17         {
    18             sum = num1 + num2;
    19 
    20         }
    21 }
    View Code
    为了明天能幸福,今天付出再多也不后悔。
  • 相关阅读:
    ASPNET5应用程序启动
    DNX概述
    MySQL数据库管理员密码忘记如何修改?
    Rsync数据复制软件应用
    Centos7系统中Mysql数据库的安装
    基于Haproxy+Keepalived实现Haproxy的高可用
    源码编译安装Mariadb数据库的时候报错,/usr/bin/c++ doesn't support -std=c++11 or -std=c++0x, you need one that does.
    mariadb数据库的安装
    更改Ubuntu和Centos系统中的镜像源
    快速搭建ELK日志分析系统
  • 原文地址:https://www.cnblogs.com/zlp520/p/3551287.html
Copyright © 2020-2023  润新知