• c# ref与out的区别


    相同点:都是输出参数

    不同点:

    ref:

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

    2.有进有出;

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

    4、是传递参数的地址

    out:

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

    2、只出不进;

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

    4、返回值;

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

    class Program
        {
            static void Main(string[] args)
            {
              //num1,num2,必须赋值
                int num1 = 10;
                int num2 = 5;
                Exchage(ref num1,ref num2);//调用方法,必须在变量前,必须加ref关键字
             
            }
      /// <summary>
            /// 使用ref方法,参数必须加ref关键字
            /// </summary>
            /// <param name="num1"></param>
            /// <param name="num2"></param>
            private static void Exchage(ref int num1,ref int num2)
            {
                //交换前
                    Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);
                    int temp = num1;
                    num1 = num2;
                    num2 = temp;
                    //交换后
                    Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);
                    Console.ReadKey();
            }
    class Program
        {
            static void Main(string[] args)
            {
            int sum;//不需赋值,即使赋值,也会被覆盖
                NumSum(10,5,out sum);
                Console.Write(sum);
                Console.ReadKey();
            }
       /// <summary>
            /// 求和
            /// </summary>
            /// <param name="num1"></param>
            /// <param name="num2"></param>
            /// <param name="sum"></param>
            private static void NumSum(int num1,int num2,out int sum)
            {
                sum = num1 + num2;
     
            }
    }
  • 相关阅读:
    HTML之元素分类(HTML基础知识)
    GreenPlum 与hadoop什么关系?(转)
    安装配置MySQL
    Linux下安装jdk步骤
    Linux ssh无密码登录
    左右无间切换走马灯angularJS指令
    CSS3制作立方体--有趣的应用
    hello,2017
    渐进增强与优雅降级
    图片上传预览(包含大小压缩)
  • 原文地址:https://www.cnblogs.com/liangss/p/5143434.html
Copyright © 2020-2023  润新知