Unity C# | 讀(get)和寫(set)概述 & 基本運用

2022/02/11閱讀時間約 5 分鐘

前言

  這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法,所以不會使用過多的程式和範例來做說明,希望以易懂白話的方式傳達這個很常看到但不易理解的概念。
  前篇文章提到擔心文章撰寫之前學的知識會和新學的知識衝突,進而學新知識和撰寫就舊學知識文章導致工作量大增,時間證明我想多了,人總有雜物跟其他事情,翻著筆記本,我在尋找值得撰寫的文章。

屬性:讀(get)、寫(set)

  讀跟寫不好懂,我想一部分原因來自於新手不常用,它不像其他程式跟修飾詞屬於「總會用到」的類型,而是屬於「也可以這麼用」的類型,不過理解後也還好。

屬性(Properties)

  首先要介紹屬性,在微軟C#官方定義為:
「屬性會合併欄位和方法的各個層面。 對物件的使用者而言,屬性會呈現為欄位,而存取屬性需要相同的語法。 對於類別的實作器而言,屬性是一或兩個程式碼區塊,代表 get 存取子和 (或) set 存取子。
  因為在這一段敘述中,你需要理解欄位(fields)、方法(method)、類別(class)、實作器(implementer)、程式碼區塊(code blocks)、存取子(accessor)

當屬性來到現實世界

  如果要求學習每程式都需要理解每一個單字的內容,那學習程式會變得相當痛苦,但有些人就是想要從定義下手,譬如我,學這些基本屬性讓我作了不少筆記,也花了不少時間,我現在用我的理解解釋給你看。
  所謂屬性(properties),就是一種「限制器」、「中繼站」,就像「保險絲」一樣的作用,假設有有一個人類被創造了,而耶穌跟佛祖都想設定你的基本參數,像體重、智商等等,耶穌在設定智商時,多了一個零變成1100IQ,而屬性(properties)這個「保險絲」,就會幫你轉變成200IQ(人類理論最大值)或是乾脆斷電(連值都沒有)。
  在智商的變數上面,分為「耶穌設定的智商」和「你的智商」兩個不同的數字,於是「保險絲」就運作了,寫(set)負責更改「耶穌設定的智商」然後存進「保險絲儲存的智商」、寫(set)負責把「保險絲儲存的智商」轉移給「你的智商」

程式中的屬性

  為了確保所有人聽懂,保險絲是確保電線不會燒起來,本身也是電線的一種,只是比較容易燒起來,會提前把自己燒斷,在程式中宣告的就是變數
//變數(variable)
private int a;
//屬性(properties)
private int a{ ... }
屬性通常針對外來參數,也就是其他程式的參數,所以常用公開存取修飾詞
//變數(variable)
private int a;

//屬性(properties)
public int A{ ... }
如果不知道為什麼要大寫,請參考

讀(get)

讀(get)存取子(accessor)決定屬性(properties)
回傳(return)變數(variable)給誰。
//完整寫法
private int a;
public int A;
{
  get
  {
    return a;
  }
}
//properties使用Lambda方式撰寫
public int A;
{
  get =>a;
}

寫(set)

寫(set)存取子(accessor)決定屬性(properties)
改寫「此屬性被修改後的原始值」
//套用讀的範例
private int a;
public int A;
{
  get =>a;
  set
  {
    if(A>10)
    {
      A=10;
    }
  }
}
其他程式呼叫的結果
//假設讀寫範例的類別(class)名稱為AA
//假設這兩個程式位於同個物件
public AA AA;
AA = getComponent<AA>();
AA.a=1 (無法使用)
AA.a=99(無法使用)
AA.A=1 (AA中的a=1)
AA.A=99(AA中的a=10)

名詞介紹

唯獨(readonly)(唯讀屬性)

  沒有讀(set)存取子(accessor)會視為唯獨。

沒有 set 存取子的屬性會視為唯讀。 沒有 get 存取子的屬性則視為唯寫。 具有這兩個存取子的屬性是讀寫。

唯寫(readwrite)(唯寫屬性)

  沒有讀(get)存取子(accessor)會視為唯寫。  

讀寫(屬性)

  讀(get)、寫(set)存取子(accessor)均存在  

結尾

  本文章參考微軟C#,連結放置最下方,有興趣看官方更詳細的範例可以點及參考,這篇主要是概述和解釋,不過詳細的講解。
  寫這篇文章意外的花了我想當久的時間,要找資料查原文,切換微軟C#不同的語言模式,寫了將近兩個小時,不得不說藉由撰寫解釋,我對讀寫瞭解更加詳細了。
為什麼會看到廣告
96會員
242內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
發表第一個留言支持創作者!