zoukankan      html  css  js  c++  java
  • 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
    为了明天能幸福,今天付出再多也不后悔。
  • 相关阅读:
    第九章(二)DAG上的动态规划
    第九章 (一)动态规划
    第八章(三)滑动窗口
    第八章 (二)贪心法
    斐波那契数列
    第七章 (四)BFS(路径寻找问题)
    TensorFlow——Graph的基本操作
    TensorFlow——共享变量的使用方法
    TensorFlow——常见张量操作的API函数
    TensorFlow——TensorBoard可视化
  • 原文地址:https://www.cnblogs.com/zlp520/p/3551287.html
Copyright © 2011-2022 走看看