Set,Get アクセッサ

DATA1=40 DATA2=30   GCM=10  LCM=120

C# で Set アクセッサ, Get アクセッサを使って Class 内で定義されているデータ領域にアクセスします。
public 宣言されていないデータ領域にアクセスするときは Set, Get アクセッサを使います。

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

プログラムの説明

  1. フォルダーに次のファイルを格納して下さい。
    /****************************************/
    /*★ C# Data Access Test    前田 稔 ★*/
    /****************************************/
    using System;
    class console
    {
        public static int Main()
        {
            gcmlcm  glcm = new gcmlcm(24,32);
            glcm.data1 = 40;
            glcm.data2 = 30;
            Console.WriteLine("DATA1={0} DATA2={1}   GCM={2}  LCM={3}",
                               glcm.data1,glcm.data2,glcm.gcm(),glcm.lcm());
            System.Console.ReadLine();
            return 0;
        }
    }
    
    class gcmlcm
    {
        int d1, d2;
    
        public gcmlcm(int n, int m)
        {
            d1= n;
            d2= m;
        }
    
        public int data1
        {
            get
            {
                return d1;
            }
            set
            {
                if (value>0)    d1= value;
            }
        }
    
        public int data2
        {
            get
            {
                return d2;
            }
            set
            {
                if (value>0)    d2= value;
            }
        }
    
        public int gcm()
        {
            int     n,m;
            n= d1;
            m= d2;
            while(n!=m)
            {   if (n>m)    n-= m;
                else        m-= n;
            }
            return n;
        }
    
        public int lcm()
        {
            int     wk;
            wk= gcm();
            return d1*d2/wk;
        }
    }
    
  2. class gcmlcm は gcmlcm Class を定義 で説明した Object Class です。
    データ領域を public で宣言して直接 d1,d2 にアクセスする操作は、C# では好ましい方法ではありません。 (^_^;)
    その代わりに C# では「get アクセッサ,set アクセッサ」が用意されています。
    d1,d2 の宣言に public が付いていないことを確認して下さい。
  3. d1 にアクセスする get アクセッサと set アクセッサです。
    data1 の名前で参照すると d1 の値が戻されます。
    data1 にゼロより大きい値を設定すると、その値は d1 に設定されます。
    value は設定された値を意味するキーワードです。
    get アクセッサしか定義されていないときは、読み出し専用になります。
        public int data1
        {
            get
            {
                return d1;
            }
            set
            {
                if (value>0)    d1= value;
            }
        }
        
  4. get アクセッサと set アクセッサの呼び出し方は、public 変数を直接参照する場合と同じです。
            glcm.data1 = 40;
            glcm.data2 = 30;
            Console.WriteLine("DATA1={0} DATA2={1}   GCM={2}  LCM={3}",
                               glcm.data1,glcm.data2,glcm.gcm(),glcm.lcm());
        

【演習】

  1. data2 にゼロを設定して、格納されないことを確かめて下さい。
    glcm.data2 = 0;
  2. set アクセッサを修正して、1~10000 の値だけが設定できるようにして下さい。

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