• 参数修饰符Params.out.ref的区别


    params一个可以让方法拥有的可变参数的关键字;
    using System;
    public class Program
    {
    static void UseParams(params int[] list)
    {
    string temp="";
    for(int i=0;i<list.Length;i++)
    {
    temp=temp+""+list[i].ToString();
    }
    Console.WriteLine(temp);
    }
    static void UseParams2(params object[] list)
    {
    string temp="";
    for(int i=0;i<list.Length;i++)
    {
    temp=temp+""+list[i].ToString();
    }
    Console.WriteLine(temp);
    }
    static void Main()
    {
    UseParams(1,2,3);//3个参数
    UseParams(1,2);//2个参数
    UseParams2(1,'a',"test");//3个参数
    int [] myarray=new int[3]{1,12,13};//数组参


    UseParams(myarray);
    int a;
    meth(out a);
    Console.WriteLine(a);
    Console.Read();
    }
    static void meth(out int i)
    {
    i=40;
    }
    }
    out--一个输出参数
    static void main()
    {
    int value;//不必初始化
    method(out value);
    Console.writeline(value);//

    }
    static void method(out int i)
    {
    i=40;
    }
    】结果等于40;
    不必初始化OUT参数传递的变量,因为OUT参数在进入方法(函数)后

    清空自己,使自己变成一个干净的参数,也因为这个原因必须在方法

    返回之前为OUT参数赋值,REF要求变量必须在传递之前进行初始化。
    Ref--仅仅是一个地址(引用参数)
    static void main()
    {
    int value;//不必初始化
    method(ref value);
    Console.writeline(value);//

    }
    static void method(ref int i)
    {
    i=40;
    }
    结果与OUT的值一样;
    Ref参数传递的变量必须初始化,因为ref参数在进入方法后还是它自

    己,它这个地址指向的还是原来的值,也因为这个原因,ref参数可

    以在使用它的方法内部不操作。这与OUT不同,OUT的参数在传递之前

    不需要显式初始化。

  • 相关阅读:
    线程池的优雅关闭实践
    InheritableThreadLocal原理解析
    线程池踩坑
    两个线程通讯(生产-卖面包问题)
    谈谈redis的热key问题如何解决
    中国软件杯选题A1数据智能分析报告系统
    《程序员的思维修炼》读后感
    《算法导论》读后感
    《重构》读后感
    《代码整洁之道》读后感
  • 原文地址:https://www.cnblogs.com/DebugLZQ/p/2132415.html
Copyright © 2020-2023  润新知