技術文章
技術問答
My Project
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2026 iThome 鐵人賽
DAY
19
0
自我挑戰組
學習C#續
系列 第
19
篇
Day 19: 擴充方法(Extension Methods)與現代模式比對(Pattern Matching)
18th鐵人賽
413570622
2026-10-02 12:55:25
26 瀏覽
分享至
擴充方法(Extension Methods):
允許在不修改原始類別原始碼、不使用繼承的前提下,向既有型別(包含 .NET 內建型別或第三方類別庫)動態「外掛」新方法。
三大必備語法規則:
擴充方法必須定義在靜態類別(static class)中。
擴充方法本身必須宣告為靜態方法(static method)。
方法的第一個參數前必須加上 this 關鍵字,用以指定要擴充的目標型別(例如 this string str)。
呼叫時如同該物件自帶的實體方法,支援 IntelliSense 自動提示與方法鏈結(Method Chaining)。
現代模式比對(Pattern Matching):
switch 運算式(Switch Expressions):相比傳統 switch 陳述式,改用箭頭符號 => 且支援直接回傳值,預設情況以底線 _(Discard)代表 default。
型別比對(Type Pattern):檢查物件是否屬於指定型別,並於符合時宣告具型別變數(例如 case Circle c:)。
屬性比對(Property Pattern):直接在比對條件中使用 { 屬性名稱: 期待值 } 檢查物件屬性,免去繁瑣的 if (obj.Prop == ...) 寫法。
關係與條件比對(Relational & When Clause):結合 <, >, <=, >= 進行範圍判定,或使用 when 關鍵字加上附加篩選條件。
實作範例
留言
追蹤
檢舉
上一篇
Day 18:發行者/訂閱者模式(Publisher-Subscriber Pattern)
系列文
學習C#續
共
19
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
15
Day 15:LINQ的基本操作
16
Day 16:LINQ(排序運算、群組運算)
17
Day 17:select 子句投影作用、LINQ to Object
18
Day 18:發行者/訂閱者模式(Publisher-Subscriber Pattern)
19
Day 19: 擴充方法(Extension Methods)與現代模式比對(Pattern Matching)
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
929
組
團體組數
32
組
累計文章數
16463
篇
完賽人數
227
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
17th鐵人賽
14th鐵人賽
12th鐵人賽
18th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
熱門問題
好奇問問各位大大當如果面對上層施壓時,工程師應當如何捍衛自己的工作優先考量權?上層威脅利誘時,又應當如何用溫和不失堅定的語氣讓上司明白自己為什麼這麼做
網咖外掛
讓 AI Agent 唯讀連 PostgreSQL:BEGIN READ ONLY 擋不住 COPY TO PROGRAM,防線該設在交易還是角色?
新的IR ? 適合嗎 Dynamic Incident Response: A Framework for Security Teams
熱門回答
讓 AI Agent 唯讀連 PostgreSQL:BEGIN READ ONLY 擋不住 COPY TO PROGRAM,防線該設在交易還是角色?
好奇問問各位大大當如果面對上層施壓時,工程師應當如何捍衛自己的工作優先考量權?上層威脅利誘時,又應當如何用溫和不失堅定的語氣讓上司明白自己為什麼這麼做
網咖外掛
熱門文章
Claude code 新手篇 8.5: Auto mode — 你的預設模式到底在幫你擋什麼
Day 13|多開幾個 Subagent,會比較快嗎?
Day1 | 【前言與觀念】為什麼選擇 n8n?認識 Low-Code 自動化的力量
Ai真的停不下來了嗎
Claude code 新手篇 8:先想清楚再動手 — Plan Mode 與權限模式
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}