zoukankan      html  css  js  c++  java
  • 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();
        }

     
  • 相关阅读:
    Android数据存储之IO
    UVA
    【源代码剖析】tornado-memcached-sessions —— Tornado session 支持的实现(二)
    杀毒与免杀技术具体解释之二:特征码定位-工具及原理
    C++ 訪问控制权限图解
    新辰:传统行业进军互联网 怎样颠覆网络获得新生?
    【二】注入框架RoboGuice使用:(Your First View Injection)
    POJ 1741 Tree 树形DP(分治)
    技术单词
    活动合集 | 2017微软技术暨生态大会 英雄讲师召集令
  • 原文地址:https://www.cnblogs.com/51net/p/2535236.html
Copyright © 2011-2022 走看看