struct をパラメータで渡す

pnt.xypos= X:123, Y:45
pnt.xypos= X:123, Y:45

C# で struct をメソッドのパラメータとして渡します。

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

プログラムの説明

  1. struct と object class は良く似ていまが、全く同じではありません。
    class がポインタで渡されるのに対して、struct は値が渡されます。
    ポインタが渡された場合は、ポインタを通じて元の値が変更されますが、値が渡されたときは元のデータに影響しません。
    struct をパラメータとして渡して、プログラムで確かめてみましょう。
  2. pnt に生成した Point struct を func 関数のパラメータとして渡すと値が渡されます。
    func 関数では、渡されたパラメータを通じて x の値を変更していますが、元の pnt の値には影響しません。
    同じプログラムを class で確かめて下さい。
  3. ソースコードです。
    /********************************/
    /*★ struct Sample    前田 稔 ★*/
    /********************************/
    using System;
    
    class console
    {
        public static void Main()
        {
            Point   pnt = new Point();
    
            pnt.x = 123;
            pnt.y = 45;
            Console.WriteLine("pnt.xypos= {0}",pnt.xypos());
            func(pnt);      // パラメータとして pnt を渡す
            Console.WriteLine("pnt.xypos= {0}",pnt.xypos());
            System.Console.ReadLine();
        }
    
        static void func(Point par)
        {   par.x= 7;       // パラメータを通じて x の値を変更する
        }
    }
    
    struct Point
    {
        public  int x;
        public  int y;
    
        public string xypos()
        {
            return "X:" + x.ToString() + ", Y:" + y.ToString();
        }
    }
    

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