Sort XYZ

1 3 5

ref(reference) パラメータを使って X,Y,Z をソートします。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. sort() メソッドに渡されたパラメータの値(x,y,z)を、昇順に並べて返します。
    C++ ではこのようなプログラムにはポインタを使うのが普通ですが、C# では ref(reference) を指定したパラメータを使います。
    C# でもポインタを使おうと思えば使えるのですが、領域保護の関係でなるべく使わないのがルールのようです。
    パラメータに値を設定して持ち帰るだけなら out を使うのですが、今回のように参照と設定の両方を行うときは ref を指定します。
  2. Main() 関数も sort() 関数も Static で宣言して下さい。
    ソースコードです。
    /****************************************************/
    /*★ C# Sort X,Y,Z  Function Program    前田 稔 ★*/
    /****************************************************/
    using System;
    
    class Prog
    {
        public static void Main()
        {
            int     a= 5;
            int     b= 1;
            int     c= 3;
            sort(ref a, ref b, ref c);
            Console.WriteLine("{0} {1} {2}", a, b, c);
            Console.ReadLine();
        }
    
        static void sort(ref int x, ref int y, ref int z)
        {
            int     wk;
            if (x>y)
            {   wk= x;  x= y;   y= wk;  }
            if (x>z)
            {   wk= x;  x= z;   z= wk;  }
            if (y>z)
            {   wk= y;  y= z;   z= wk;  }
        }
    }
    

【演習】

out パラメータを使う と比べてみて下さい。

【NOTE】

  1. ref で渡すパラメータには、呼び出す前に値を設定しておいて下さい。
    正常な値が設定されていないと、エラーで終了することがあります。
  2. out も ref も省略すると値(value)が渡されます。

超初心者のプログラム入門(C# Frame Work)