C# set 與 get 用法與範例

  • 78690
  • 0

學習記錄

    //get 存取子 "提供",將該值(字串)進行判斷、處理再回傳 
    //set 存取子 "設定",用於處理計算及邏輯處理     

範例一數字運算

    class subclass
    {
        private double salary = 100.0;
        //salary 成員則是透過公用唯讀屬性存取
        public double Salary
        {
            get { return salary; }
            set { salary = value; }
        }
    }

    class Progam
    {
        static void Main()
        {
            subclass e = new subclass(); //實例化subclass類別,以產生new的物件"e"            
            Console.WriteLine("subclass  e.ToString => {0}", e.Salary.ToString());
            e.Salary = 1111;
            Console.WriteLine("subclass  e.ToString => {0}", e.Salary.ToString());
            e.Salary += 1;
            Console.WriteLine("subclass  e.ToString => {0}", e.Salary.ToString());
            Console.ReadKey();
        }
    }

get 存取子

執行基底類別

class subclass
    {
        private double salary = 100.0;
        //salary 成員則是透過公用唯讀屬性存取
        public double Salary
        {
            get { return salary; }           
        }
    }

set含有特殊的keyword: value
當有值傳入時,都會存入value中

所以當執行 e.Salary = 1111; 會將預設值由100.0改成1111

透過公用屬性 set { salary = value; } 

class subclass
    {
        private double salary = 100.0;
        //salary 成員則是透過公用唯讀屬性存取
        public double Salary
        {
           set { salary = value; }          
        }
    }

以此類推

結果如下:

範例二 字串 

  class subclass
    {
        public string name;      
        //subclass class被實例化時,會立即執行建構子內容,並且可以傳入參數       

        public string nameGet
        {
            get
            {
                if (name != "")
                {
                    return name;
                }
                else
                {
                    return "default";
                }
            }
            set
            {
                Console.WriteLine("NameGet : {0}", value);
            }
        }

        public override string ToString() // 覆寫 subclass.ToString()
        {
            return "override string ToString = " + name;
        }
    }


    class Progam
    {
        static void Main()
        {
            subclass e = new subclass(); //實例化subclass類別,以產生new的物件"e"            
            e.name = "JT";
            Console.WriteLine("覆寫 e.Tostring : {0}", e);

            e.nameGet = "Brayn";          
            //set含有特殊的keyword: value
            // 當有值傳入時,會存入value中
            // set
            //{
            //    Console.WriteLine("帳號:{0}", value);
            //}
             Console.WriteLine("NameGet ToString => {0}", e.nameGet);
            //get 存取子為 "提供",要返回結果
            //get {
            //     if (name != "")
            //      {
            //          return name;
            //      }
            //      else
            //      {
            //          return "default";
            //      }
            //  }        

            Console.ReadKey();
        }
    }

 

// 覆寫 subclass.ToString()

 

   class subclass
    {    
        public override string ToString() // 覆寫 subclass.ToString()
        {
           return "override string ToString = " + name;
        }
    }

呼叫執行用法

Console.WriteLine("subclass  e.ToString => {0}", e.Salary.ToString());

下面兩種方式 可呼叫相同結果

1. Console.WriteLine("e.Tostring : {0}", e);

2. Console.WriteLine("e.Tostring : {0}", e.tostring());

純記錄 ,練習回想,再測試。

有事沒事多學,學習活在當下,做一件事情後,學會一件事就好。 JT