善用C# 新版本特性

閱讀時間約 3 分鐘

前情提要

我以前是很排斥變更Unity 版本的,一來要重新下載,二來重跑編譯不知道會不會出甚麼大事,尤其跨版更新那更是刺激,但隨著Unity 逐漸穩定,現在更新反而利大於弊,這篇就來說說近幾版C# 的語法糖與功能,順便水一篇
這篇主要講的是 C# 9.0 ! (Unity 2021 later )

new()

這算是最常用到的,對於超級懶人的我來說。直接上程式碼:
對於已知類型的情況下,直接打上 new() 來使用建構式建立對象。
這讓泛型的宣告變得簡短很多:
沒錯,方法的回傳值也有明確定義,所以也能使用這個語法糖。

模式匹配

這部分是最近在學 Rust 才注意到的功能,C#9.0 也新增了不少模式匹配的關鍵字,可以用更簡潔的方式把程式碼完成。先看一個簡單的例子:
這是一個簡單的方法,判斷輸入的分數應給出甚麼評語,這邊用到了 and 關鍵字,這正是奇妙的地方。
C#9.0 新增了 is / or / and / not 關鍵字 來強化模式匹配的撰寫彈性,但由於麻煩的運算順序,使用時最好要加上括號來確保條件的正確性,而且 不推薦與邏輯運算子混用
運作順序如下:
  not 👉 關係運算子 👉 and 👉 or
另外元組(Tuple)也能用解構的方式進行模式匹配:

Record

最後來說說 Record 這個特殊的類型。
先來看這段程式碼:
如果稍微熟悉 class 與 struct 特性的同學應該不難理解這個範例:
  • class 為 參考 物件,針對 記憶體位址 進行比對
  • class 指定時複製記憶體位址
  • struct 為 實值 物件,針對 進行比對
  • struct 指定時複製整個物件
而要介紹的 Record 正介於這兩者之間。上程式碼:
可以觀察到 Record 特性如下:
  • record 為 參考 物件
  • record 指定時複製記憶體位址
  • record 針對 進行比對

宣告

1. 精簡宣告:
如上面範例的單行宣告,因為會自動產生解構子,是我最常使用的宣告方式,拿來取代使用元組的情況。
使用精簡宣告會讓其屬性自帶不可變性,與 readonly 有一樣的效果。
2. 自訂宣告:
不會自動產生建構子、解構子,但能自訂屬性是否可變,也能賦予預設值。
  • L11: y 被宣告為唯讀,不能於建立時賦值
  • L15:z 被宣告為 init-only ,只有在建立時能賦值
另外, Unity 在使用 Record 時可能會報錯
未定義 'System.Runtime.CompilerServices.IsExternalInit'
只需要在專案內新增一段程式碼:
就能消除錯誤了。

非破壞性變異

使用 with 關鍵字來初始化 record ,能夠在不破壞原物件的情況下更改內容。
範例中 pr2 使用了 pr 的值,同時變更了 x

繼承

record 提供了繼承能力,且能使用 abstract 修飾詞。

結語

這次講了比較多跟程式碼相關的內容,比較枯燥乏味,但妥善運用的確能讓程式碼的維護性提升。C#也算是經過時間淬鍊的語言了,近幾版很多更新都漸漸讓工程師的創造力不再被語言所侷限,儘管微軟有股臭銅味還是非常值得誇獎,讚嘆一聲我大微軟爸爸。
6會員
10內容數
只要10分鐘!
留言0
查看全部
發表第一個留言支持創作者!
#Jaku的沙龍 的其他內容
如何使用Game CI 提供的Github Action 將建置專案自動化
UnityEvent 簡單介紹。
如何使用Game CI 提供的Github Action 將建置專案自動化
UnityEvent 簡單介紹。
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
C 台灣的新創團隊 如果想要使用以太坊技術 來營利同時做公益慈善 可以發展那些專案 #VitalikButerin #ETHTaipei2024 #ETHTaipeiHackathon2024 ... (好的顧問導師教練 協助妳提早得到幸福 更快實現夢想 幸福課程
Thumbnail
同理心是指能理解和感受他人的情緒、想法和經歷的一種能力。 在人際交往中若能展現同理心,可促進更深層次的理解和信任。 以下是一些展現同理心的方法: 展現同理心需要時間和練習,但它可以極大地改善人際關係,增強彼此間的理解和信任。 全神貫注:將注意力集中在對方的言語和非言語溝通上。 眼神接觸:保
C 台灣的新創團隊 如果想要使用以太坊技術 來營利同時做公益慈善 可以發展那些專案 #VitalikButerin #ETHTaipei2024 #ETHTaipeiHackathon2024 ... (好的顧問導師教練 協助妳提早得到幸福 更快實現夢想 幸福課程
新的一年的開頭,個人品牌經營者很適合要做一件事:分享新年度計畫!在本文中,我們將討論新年度計畫的好處,撰寫與分享技巧以及最佳的發文時間點。
Thumbnail
數位新世代父母面臨兒童使用網路的煩惱,本書以教導網路運作原理與引導孩子思考為重點,提供父母與孩子共同探索網路世界的方式。
Thumbnail
對於企業來說,60秒短影音可將產品的特點簡單明瞭地展示給觀眾,可快速地提升產品曝光度,讓更多潛在客戶瞭解到產品或品牌的存在。短影音形式可以很直觀地傳達產品價值和吸引力,從而激發觀眾的購買欲望。相較於傳統的文字、圖片等形式,短影音更具有沉浸感、感染力,更容易吸引用戶進行購買。黃奕嘉(2023)研究指出
Thumbnail
❤️個性【相似】V.S. 個性【互補】 從小時候談戀愛,這就是一個大哉問,究竟是找一個和自己個性【相似】的戀人好呢?還是找一個和自己個性【互補】的戀人比較好?!我的答案是!都不好!最好是找到一個可以相處的人!原因很簡單,如果你是高敏人,覺得自己感受力特別敏銳,但是,你以為對方同樣是高敏人,溝通起來應
※心靈真正的本質是無形的自己,不同的時空有不同的自己生活著,只是我們用肉眼無法看見。了解無形的自己,能通透所有的轉世的自己,進而重新拾回累世的才能。學習使用無形的自己的力量,這樣的力量能連結所有時空的自己,且這樣的連結在夢境中較易進行。 根據這個觀點,人的心靈不僅僅存在於目前的現實世界中,還存在於其
Thumbnail
本篇為「數位行銷新手村」日更分析文章的每週編輯整理。這次我們探討了永豐銀行的破碎式通路結盟、中信金控的一站式 LINE CRM 服務,以及 KKday 的宏觀成長策略,比較其成本、效益、風險與策略目的。 案例 1:數位改寫通路 — 把握破碎化趨勢,永豐銀行用 API 打造新通路生態 數位時代報導,永
簡單地只看這兩種主體,就會看見他們有時候需要透過「霸」道去「凌」駕於某種東西。 同學的霸凌,是迷路想找堅定的路標而已。 而師長的霸凌,是想透過省去管理,好好的教育。
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
C 台灣的新創團隊 如果想要使用以太坊技術 來營利同時做公益慈善 可以發展那些專案 #VitalikButerin #ETHTaipei2024 #ETHTaipeiHackathon2024 ... (好的顧問導師教練 協助妳提早得到幸福 更快實現夢想 幸福課程
Thumbnail
同理心是指能理解和感受他人的情緒、想法和經歷的一種能力。 在人際交往中若能展現同理心,可促進更深層次的理解和信任。 以下是一些展現同理心的方法: 展現同理心需要時間和練習,但它可以極大地改善人際關係,增強彼此間的理解和信任。 全神貫注:將注意力集中在對方的言語和非言語溝通上。 眼神接觸:保
C 台灣的新創團隊 如果想要使用以太坊技術 來營利同時做公益慈善 可以發展那些專案 #VitalikButerin #ETHTaipei2024 #ETHTaipeiHackathon2024 ... (好的顧問導師教練 協助妳提早得到幸福 更快實現夢想 幸福課程
新的一年的開頭,個人品牌經營者很適合要做一件事:分享新年度計畫!在本文中,我們將討論新年度計畫的好處,撰寫與分享技巧以及最佳的發文時間點。
Thumbnail
數位新世代父母面臨兒童使用網路的煩惱,本書以教導網路運作原理與引導孩子思考為重點,提供父母與孩子共同探索網路世界的方式。
Thumbnail
對於企業來說,60秒短影音可將產品的特點簡單明瞭地展示給觀眾,可快速地提升產品曝光度,讓更多潛在客戶瞭解到產品或品牌的存在。短影音形式可以很直觀地傳達產品價值和吸引力,從而激發觀眾的購買欲望。相較於傳統的文字、圖片等形式,短影音更具有沉浸感、感染力,更容易吸引用戶進行購買。黃奕嘉(2023)研究指出
Thumbnail
❤️個性【相似】V.S. 個性【互補】 從小時候談戀愛,這就是一個大哉問,究竟是找一個和自己個性【相似】的戀人好呢?還是找一個和自己個性【互補】的戀人比較好?!我的答案是!都不好!最好是找到一個可以相處的人!原因很簡單,如果你是高敏人,覺得自己感受力特別敏銳,但是,你以為對方同樣是高敏人,溝通起來應
※心靈真正的本質是無形的自己,不同的時空有不同的自己生活著,只是我們用肉眼無法看見。了解無形的自己,能通透所有的轉世的自己,進而重新拾回累世的才能。學習使用無形的自己的力量,這樣的力量能連結所有時空的自己,且這樣的連結在夢境中較易進行。 根據這個觀點,人的心靈不僅僅存在於目前的現實世界中,還存在於其
Thumbnail
本篇為「數位行銷新手村」日更分析文章的每週編輯整理。這次我們探討了永豐銀行的破碎式通路結盟、中信金控的一站式 LINE CRM 服務,以及 KKday 的宏觀成長策略,比較其成本、效益、風險與策略目的。 案例 1:數位改寫通路 — 把握破碎化趨勢,永豐銀行用 API 打造新通路生態 數位時代報導,永
簡單地只看這兩種主體,就會看見他們有時候需要透過「霸」道去「凌」駕於某種東西。 同學的霸凌,是迷路想找堅定的路標而已。 而師長的霸凌,是想透過省去管理,好好的教育。