• C# 中的 Out 和 Ref 及Params 参数


    out 和ref 参数 经常用来通过方法传递参数来获取值,当您的方法不只有一个返回值的时候,这两个参数就发挥作用了。ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。 
    在这篇文章里,我将解释如何在c#应用中使用这两个参数。
     
    1out 参数
     
    out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
     
    public class mathClass
    {
    public static int TestOut(out int iVal1, out int iVal2)
    {
        iVal1 = 10;
        iVal2 = 20;
        return 0;


    public static void Main()
    {
        int i, j; // variable need not be initialized 
        Console.WriteLine(TestOut(out i, out j));
        Console.WriteLine(i);
        Console.WriteLine(j);
    }
    }
     
    2ref 参数
     
    ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 

    static void Main(string[] args)
    {
    // Ref sample 

       int refi; // variable need be initialized 
       refi = 3
       RefTest(ref refi); 
       Console.WriteLine(refi); 
       Console.ReadKey(); 



    public static void RefTest(ref int iVal1) 

       iVal1 += 2
    }
     
     ref和out参数的区别
      
    使用ref前必须对变量赋值,out不用。 

    out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。
     
    3params 参数
    params 关键字可以指定在参数数目可变处采用参数的方法参数。
    在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。
    using System;

    class App
    {
        public static void UseParams(params object[] list)
        {
            for (int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
        }

        static void Main()
        {
            // 一般做法是先构造一个对象数组,然后将此数组作为方法的参数
            object[] arr = new object[3] { 100'a'"keywords" };
            UseParams(arr);

            // 而使用了params修饰方法参数后,我们可以直接使用一组对象作为参数
            
    // 当然这组参数需要符合调用的方法对参数的要求
            UseParams(100'a'"keywords");

            Console.Read();
        }

     
  • 相关阅读:
    Linux高级篇--Linux防火墙
    一、华为模拟器eNSP下载与安装教程
    中继器,集线器,网桥,交换机,路由器有什么区别?//联网用到的硬件简介
    Web前端调试技巧
    疯狂HTML5-CSS3-JavaScript讲义-光盘源码-李刚
    HTML5从入门到精通-电子书和随书光盘
    案例学Web前端开发-电子书和随书光盘
    [转]OpenLayer4地图全屏的实现
    网页开发中使用javascript语言时浏览器操作时弹出错误:Uncaught TypeError: Cannot set property 'onClick' of null。
    java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.h...
  • 原文地址:https://www.cnblogs.com/51net/p/2535236.html
Copyright © 2020-2023  润新知