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

更新於 發佈於 閱讀時間約 6 分鐘

前言

  這篇文章主要介紹存取子讀(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{ ... }

如果不知道為什麼要大寫,請參考

Unity C# | 命名法則 & 低耦合、高內聚

讀(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#不同的語言模式,寫了將近兩個小時,不得不說藉由撰寫解釋,我對讀寫瞭解更加詳細了。

微軟官方C# 屬性(properties)


raw-image



留言
avatar-img
留言分享你的想法!
avatar-img
瓶裝雪的沙龍
108會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
C# 9.0 給 Unity 程式設計上帶來的便利
Thumbnail
C# 9.0 給 Unity 程式設計上帶來的便利
Thumbnail
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
Thumbnail
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
Thumbnail
,先來分享一下封裝是怎麼一回事。 一、封裝(Encapsulation) 封裝就是把一些功能的處理程序或是資料包起來,也對於程式碼做權限的設定做一層保護的機制,這是為了防止程式碼被竄改,所以有了封裝可以保障我們資料的隱密性,甚至封裝也是一種將一些處理程序隱藏起來,讓使用者使用時可以更加單純。 1.什
Thumbnail
,先來分享一下封裝是怎麼一回事。 一、封裝(Encapsulation) 封裝就是把一些功能的處理程序或是資料包起來,也對於程式碼做權限的設定做一層保護的機制,這是為了防止程式碼被竄改,所以有了封裝可以保障我們資料的隱密性,甚至封裝也是一種將一些處理程序隱藏起來,讓使用者使用時可以更加單純。 1.什
Thumbnail
一、存取修飾詞public / private / protected / internal 二、參數修飾詞ref / in / out >>>>>由於我們在寫程式時,會去宣告一些變數、常數相關識別詞,並且在class(類別)中會寫一些事情或動作讓程式去運行,然而這個概念就是去定義對於我們所寫的內容
Thumbnail
一、存取修飾詞public / private / protected / internal 二、參數修飾詞ref / in / out >>>>>由於我們在寫程式時,會去宣告一些變數、常數相關識別詞,並且在class(類別)中會寫一些事情或動作讓程式去運行,然而這個概念就是去定義對於我們所寫的內容
Thumbnail
承接上一段,接下來到了一段Rust比較新奇的部分也是控制記憶體的部分AKA所有權。 Rust 程式設計語言 所有權是在Rust處理記憶體的機制,記憶體由所有權系統管理,且編譯器會在編譯時加上一些規則檢查。 在這之前需要知道的部分 每個變數有一個所有者(owner) 同時間只能有一個所有者 只要擁有者
Thumbnail
承接上一段,接下來到了一段Rust比較新奇的部分也是控制記憶體的部分AKA所有權。 Rust 程式設計語言 所有權是在Rust處理記憶體的機制,記憶體由所有權系統管理,且編譯器會在編譯時加上一些規則檢查。 在這之前需要知道的部分 每個變數有一個所有者(owner) 同時間只能有一個所有者 只要擁有者
Thumbnail
介紹 在程式中你看到上面有一個中括號[] 就是特性,它自身沒有任何功能。 📷 特性attribute,和注釋有什麼區別 第一個感受 特性:中括號宣告 錯覺:每一個特性都可以帶來對應的功能 實際上添加後,編譯器會在元素內部產生IL,但是我們是沒辦法直接使用的,而且在metadata會有紀錄 📷
Thumbnail
介紹 在程式中你看到上面有一個中括號[] 就是特性,它自身沒有任何功能。 📷 特性attribute,和注釋有什麼區別 第一個感受 特性:中括號宣告 錯覺:每一個特性都可以帶來對應的功能 實際上添加後,編譯器會在元素內部產生IL,但是我們是沒辦法直接使用的,而且在metadata會有紀錄 📷
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
Thumbnail
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
Thumbnail
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
Thumbnail
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
Thumbnail
使用者自訂的資料型別
Thumbnail
使用者自訂的資料型別
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News