C# get & set 存取子 class的屬性(Property)可以讓讀、寫、運算機制變得更有彈性, 在這裡要介紹屬性的一個特殊的methods,稱為: 存取子(accessors),也可稱為訪問器 存取子包含 get存取子、set存取子

get 可以形容成 “提供”,要返回結果 set 則可形容成 “設定”,多數在處理計算及邏輯處理

那存取子有甚麼功用呢? 例如:在一般情況下,將變數的狀態屬性設定為string,就只能用來存取字串,int就只能用來處理整數 在class中,這些狀態屬性就可以透過存取子做額外加入邏輯判斷等描述式

get 範例 可以透過 get 存取子,將字串進行判斷、處理…. 再返回結果

//建立 A 類別
public class A
{
    //包含兩個string 
    public string name;
    public string st
    {
        //使用get存取子
        get {
            if (name != "")
            {
                return name;
            }else
            {
                return "default";
            }
        }
                
    }
}


static void Main(string[] args)
{
    //實例化A類別
    A x = new A();
    //設定A.name
    x.name = "Brown";
    //取得 st
    Console.WriteLine("帳號:"+ x.st);
}

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

//建立 A 類別
public class A
{
    //包含兩個string
    public string v;
    public string st
    {
        //使用set存取子
        set
        {
            //不多解釋,傳入值都會存在 value
            Console.WriteLine("帳號:" + value);
        }
                
    }
}


static void Main(string[] args)
{
    //實例化A類別
    A x = new A();
    //A.st 傳入值
    x.st = "Adam";
           
}

get and set 範例 可以試著執行,看看結果會是如何

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        //建立 A 類別
        public class A
        {
            public string v;
            public string name;
            //A class被實例化時,會立即執行建構子內容,並且可以傳入參數
            public string Show
            {
                get { return name; }
                set {
                    name = v;
                    Console.WriteLine("I am "+value);
                }
            }
        }


        static void Main(string[] args)
        {
            //實例化A類別
            A x = new A();

            x.v = "Brown";
            x.Show = "Joe";
            Console.WriteLine(x.Show);
        }
    }
}