• 方法中参数的类型详细


    1. in型参数 
      in型参数通过值传递的方式将数值传入方法中。即我们在Java中常见的方法

    2. ref型参数 
      该种类型的参数传递变量地址给方法(引用传递),传递前变量必须初始化。 
      该类型与out型的区别在与: 
      1).ref型传递变量前,变量必须初始化,否则编译器会报错,而out型则不需要初始化 
      2).ref型传递变量,数值可以传入方法中,而out型无法将数据传入方法中。换而言之,ref型有进有出,out型只出不进。

    3. out型参数 
      与ref型类似,仅用于传回结果。 
      注意: 
      1). out型数据在方法中必须要赋值,否则编译器会报错。 
      eg:如下图若将代码中的sum1方法的方法体 
      改为 a+=b;则编译器会报错。原因:out型只出不进,在没给a赋值前是不能使用的 
      改为 b+=b+2;编译器也会报错。原因:out型数据在方法中必须要赋值。 
      2). 重载方法时若两个方法的区别仅限于一个参数类型为ref 另一个方法中为out,编译器会报错 
      eg:如下图若将代码中 
      方法名sum1 改为sum(或者将方法名sum改为sum1),编译器会报错。 
      Error 1 Cannot define overloaded method ‘sum’ because it differs from another method only on ref and out 
      原因:参数类型区别仅限于 为ref 与为out 时,若重载对编译器而言两者的元数据表示完全相同。

    具体区别见代码

    class C
        {
            //1. in型参数
            public void sum(int a, int b) {
                a += b;
            }
            //2. ref型参数
            public void sum(ref int a, int b)
            {
                a += b;
            }
            //3. out型参数
            public void sum1(out int a, int b)
            {
                a = b+2;
            }
            public static void Main(string[] args)
            {
                C c = new C();
                int a = 1, b = 2;
                c.sum(a,b);
                Console.WriteLine("a:{0}", a);
                a = 1; b = 2;
                c.sum(ref a, b);
                Console.WriteLine("ref a:{0}", a);
                a = 1; b = 2;
                c.sum1(out a, b);
                Console.WriteLine("out a:{0}", a);
            }
        }

    输出结果: 
    输出结果 
    从代码也可以看出,in型参数为值传递,所以当将变量a传入方法时,变量a的值并不会发生变化。而ref型参数,由于是引用传递,将变量的值和地址都传入方法中故变量值改变。out型无法将变量的值传入。但可以将变量的地址传入并为该地址上的变量赋值。

  • 相关阅读:
    在VMWare中增加Linux文件系统空间
    linux shell 字符串操作(长度,查找,替换)详解
    linux chmod命令参数及用法详解文件文件夹权限设定命令
    Linux分割日志计划任务(原创)
    写日志C#程序
    2011年底,数家大型网站数据库被窃取分析报告(原创)
    ThinkPad SL400全驱动
    东辰信竞学子——从今天开始重新出发!
    CentOS7下安装mysql8027
    arcgis基础
  • 原文地址:https://www.cnblogs.com/liuhuimh/p/7248919.html
Copyright © 2020-2023  润新知