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

閱讀時間約 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#不同的語言模式,寫了將近兩個小時,不得不說藉由撰寫解釋,我對讀寫瞭解更加詳細了。
為什麼會看到廣告
avatar-img
105會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章會帶你了解Unity中Inspector最基本項目中的Tag&Layer,以及Tag相關應用。
這篇文章會介紹一個靜態浮點數Time.deltaTime,並教導你製作計時器,以及計時器的相關知識與使用建議。
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
這篇文章會帶你了解Unity中Inspector最基本項目中的Tag&Layer,以及Tag相關應用。
這篇文章會介紹一個靜態浮點數Time.deltaTime,並教導你製作計時器,以及計時器的相關知識與使用建議。
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。