C#の方法、REF、のparamsパラメータアウト

  A、outパラメータの例

[例]配列、最小値、合計、平均、最大値を選択します

  プログラムクラス
    { 
        静的な無効メイン(文字列[] args)
        { 
            //配列の最大値を選択する方法を記述し、最小値、合計、平均
            INT [] NUMS = {1、 2、3、4、5、6 、7}; 
            int型マックス; 
            INT SUM; 
            INT分; 
            INT AVG; 
            BOOL B; 
            文字列s、
            ダブルD; 
            GetValueメソッド(NUMS、OUT MAX、OUT分、OUT SUM、OUT AVG、OUT B、OUT S、OUT D) ; 
            Console.WriteLineを( "アレイの最大値:{0}は、最小値:{1}、の合計:{2}、平均値:{} 3。"、MAX、MIN、SUM、AVG); 
            Console.WriteLineを( "パラメータ値を出力する方法の異なるタイプ:{0}、{1}、{2}"、B、S、D); 
            Console.ReadKey(); 
        } 
        /// <まとめ>
        ///整数配列、最小、合計、平均、最大値選択
        /// </要約> 
        /// <PARAM名= "NUMSする"> </ param>の配列値を必要
        /// <PARAM名前= "最大">最大のリターン</ param>の
        /// <PARAM NAME = "分">最小</ param>の復帰
        ///ます。<param name = "合計" > 還元額</ PARAM > 
        ///ます。<param name = "AVG">平均リターン</ param>の
        公共の静的な無効GetValueメソッド(INT [] NUMS、int型の最大OUT、OUTの分はint、int型SUM OUT、int型AVG OUT、B OUT BOOL、ストリングS OUT、OUTダブルD)
        { 
           // OUTパラメータ要件は内部メソッドの値に割り当てられなければならない
            最大= NUMS [0]; 
            分= NUMS [0]; 
            SUM = 0; 
            (INT I = 0を、I <NUMS .LENGTH;I ++) 
            {  
                IF(NUMS [I]> MAX)
                {
                    最大= NUMS [i]は、
                } 
                IF(NUMS [I] <分)
                { 
                    分= NUMS [I]。
                } 
                和+ = NUMS [I]。
            } 
            平均=和/ nums.Length。

            B =はtrue。
            S = "123"。
            D = 3.13; 
        } 
    }

示されるように、実行コード出力結果:

要約:

この方法ならば、戻り値の同じタイプの複数の、我々は配列を返す考えることができます。しかし、それは、その後、今回は接続しません配列を返す戻り値の異なる種類の数は、我々は、パラメータアウトの使用を考慮することができます。

アウトパラメータは、値の異なる複数種類のを返すための方法に焦点を当てます。

 

第二に、例のパラメータを参照

[実施例] int型の2変数を交換するために使用される方法

プログラムクラス
    { 
        静的な無効メイン(文字列[] args)
        { 
            タイプint型の二つの変数使用//交換法
            INT N1 = 10、
            N2 = 20であるINT; 
            試験(REF N1、N2 REF)を、
            Console.WriteLineを(「二; {} 1」、N1、N2)。値N1は、{0}は、N 2が交換され
            、Console.ReadKey()
        } 
        テスト(REF N1 INT、INT REF N2)ボイドパブリックstatic 
        { 
            int型TEMP = N1。
            N2 = N1; 
            N2 = TEMP; 
        } 
    }

示されるように、実行コード出力結果:

要約:

REFパラメータは変更が完了した後、可変1の方法に変更し、次いで方法で値を変更することができます。

 REFパラメータが割り当てはメソッド外でなければならない必要があり、この方法は、割り当てられなくてもよいです。

 

三つは、可変パラメータをparamsは

[例]は、任意の整数型と配列の長さを求めます

 class Program
    {
        static void Main(string[] args)
        {
            //求任意长度数组的和 整数类型的
            int[] nums = { 1, 2, 3, 4, 5, 6 };
            int sum = GetSum(8,9);
            Console.WriteLine(sum);
            Console.ReadKey();
        }
        public static int GetSum(params int[] nums)
        {
            int sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                sum += nums[i];
            }
            return sum;
        }
    } 

执行代码输出结果,如图所示:

如图所示:

 总结:

将实参数列表中跟可变参数数组类型一致的元素都当做数组的元素去处理

params可变参数必须是形参列表中的最后一个元素,并且在方法声明中只允许一个params关键字。

 

四、out 与ref的区别

区别:

1.使用ref参数时,传入的参数必须被初始化,对out而言,必须在方法中对其完成初始化。

2.使用ref参数和out参数时,在方法的参数和执行方法时,都要加ref或者out关键字。

3.out参数适合用在需要return多个返回值的地方,而ref参数则用在需要被调用的方法修改调用者的引用的时候。

如图所示:

out参数

ref参数

ref关键字是需要先初始化传入的参数,才能够使用。

 

おすすめ

転載: www.cnblogs.com/qy1234/p/11826649.html