Dec 28 2025
唐青楓 -
深入理解 C#.NET IEnumerable<T>:一切集合的起點
簡介
IEnumerableT 是 .NET 中最核心的接口之一,位於 System.Collections.Generic 命名空間中。它代表一個可枚舉的集合,支持在集合上進行迭代操作。
IEnumerableT 是什麼?
public interface IEnumerableout T : IEnumerable
{
IEnumeratorT GetEnumerator();
}
c#
,
.net
Dec 24 2025
唐青楓 -
C#.NET 索引器完全解析:語法、場景與最佳實踐
簡介
索引器(Indexer)是 C# 中的一種特殊屬性,它允許類或結構體像數組一樣使用索引語法(例如 obj[0])來訪問或修改對象內部的成員。簡單來説,它將對象的實例視為“可索引的集合”,提供類似於數組的訪問方式。
核心特性:
類似於屬性(Property),但帶有參數(通常是索引值,如整數或字符串)。
支持 get 和 set 訪問器,與屬性類似。
可以重載
c#
,
.net
Dec 21 2025
唐青楓 -
深入理解 C#.NET record:不可變對象與值語義的現代實踐
簡介
record 是 C# 9 引入的新引用類型(Reference Type),專門用於數據導向(Data-Oriented)的不可變對象。特別適合用於表示不可變的數據傳輸對象(DTO)、值對象和領域模型。
⚡ 主要特性:
內置值相等性:兩個 record 實例如果屬性值相同,則被認為相等(值相等)。
簡潔語法:通過“主構造函數”直接定義屬性。
不可變設計:推薦使用 init 訪問器,
c#
,
.net
Dec 17 2025
唐青楓 -
C#.NET struct 全解析:什麼時候該用值類型?
簡介
struct 是 值類型(Value Type),用於封裝一組相關的數據。
與類(class)相比,結構體通常更輕量,適用於小型、短生命週期的對象。
⚡ 關鍵特點:
存儲在 棧(stack)上(也可能嵌套在堆中,但本質仍是值類型)。
按值傳遞(賦值/參數傳遞時會複製整個結構)。
無需垃圾回收(GC),生命週期由作用域決定。
可包含字段、屬性、方法、構造函數、運算符重載等。
c#
,
.net
Dec 16 2025
唐青楓 -
C#.NET ref struct 深度解析:語義、限制與最佳實踐
簡介
ref struct 是 C# 7.2 引入的一種特殊結構體類型,
它與普通 struct 的最大區別是 嚴格限制其分配位置:
ref struct 只能分配在棧(stack)上,不能分配在堆(heap)上。
⚡ 設計初衷
提高性能:棧分配比堆分配快,並且無需 GC 回收。
提供安全的內存訪問:保證生命週期受控,防止內存泄漏和懸空引用。
適用於需要直接操作內存的場景,例如 Sp
c#
,
.net
Dec 15 2025
唐青楓 -
告別頻繁 GC:C#.NET PooledList 的設計與使用場景
簡介
PooledListT 是 高性能集合類型,由 Collections.Pooled 提供,用於替代 ListT,通過 對象池 (ArrayPoolT) 複用內部數組來減少 GC(垃圾回收)壓力。
⚡ 核心目標:
在需要頻繁創建/銷燬 ListT 的場景下,PooledListT 通過數組租借與歸還的機制避免頻繁分配內存,從而提升性能並降低 GC 負擔。
安裝
dotnet add p
c#
,
.net
Dec 14 2025
唐青楓 -
深入理解 C#.NET 運算符重載:語法、設計原則與最佳實踐
簡介
運算符重載是 C# 提供的一種特性,允許開發者為 自定義類型(類/結構體) 定義運算符的行為。
例如,可以讓 Vector 對象支持 + 運算,而不是僅限於基本類型(int、double 等)。
💡 本質:運算符重載是一個 帶有 operator 關鍵字的靜態方法,通過自定義方法改變運算符的操作行為。
適用範圍與限制
特性
説明
可重
c#
,
.net
Dec 09 2025
唐青楓 -
一次弄懂 C# 內聯數組(Inline Array):高性能數組的新選擇
簡介
內聯數組是 C# 12 和 .NET 8 中引入的一個高級特性,它允許開發者創建固定大小的、在棧上分配或內聯在結構體中的數組。這個特性主要用於高性能場景,可以避免堆分配和垃圾回收的開銷。
性能優勢
內聯數組的主要優勢在於性能:
棧上分配:避免堆分配和垃圾回收
內存局部性:元素在內存中連續存儲,提高緩存命中率
減少指針間接尋址:直接訪問元素,不需要通過數組對象引用
內聯數組 vs 傳
c#
,
.net
Dec 08 2025
唐青楓 -
一次看懂 C# TimeSpan:時間差操作的完整指南
簡介
TimeSpan 是 .NET 中用於表示時間間隔或持續時間的重要結構體。它提供了豐富的方法和屬性來處理時間跨度,從幾毫秒到幾百萬天都可以精確表示。
概念與特性
TimeSpan 表示一個時間間隔(時間段),而不是具體的時間點。
特性
説明
命名空間
System
結構類型
struct(值類型)
c#
,
.net
Dec 03 2025
唐青楓 -
C# 列表模式(List Patterns)深度解析:模式匹配再進化!
簡介
列表模式是一種模式匹配機制,允許檢查一個集合(例如數組、ListT、或任何實現了 IEnumerableT 的類型)的元素數量、順序以及每個元素的內容。
在 C# 10 之前,模式匹配 (Pattern Matching) 已支持 switch 表達式、類型模式、屬性模式等,但對列表或序列的匹配還不夠直觀。
C# 11 引入 列表模式(List Patterns),讓開發者可以:
c#
,
.net
Dec 02 2025
唐青楓 -
C# 泛型數學:解鎖真正的類型安全數值運算
簡介
C# 11 和 .NET 7 引入了泛型數學(Generic Math)功能,這是一個革命性的特性,允許開發者編寫適用於多種數值類型的通用數學算法。這是通過靜態抽象接口成員實現的,解決了長期以來在泛型代碼中處理數學運算的難題。
為什麼需要“泛型數學”?
以前無法對“數字類型集合”(int/float/decimal/BigInteger/...)做統一的泛型約束(只能 where T :
c#
,
.net
Dec 02 2025
唐青楓 -
C# 原始字符串字面量全面解析:多行字符串終於優雅了!
簡介
C# 11 引入了原始字符串字面量(Raw String Literals),這是一個革命性的特性,極大地簡化了包含大量特殊字符(如引號、反斜槓、換行符等)的字符串處理。
原始字符串字面量允許創建包含任意文本的字符串,而無需轉義特殊字符。它們以至少三個雙引號 """ 開始和結束,並且可以跨越多行。
核心特性與優勢
核心特點
無轉義需求:不需要對引號、反斜槓等特殊字符進行轉義
多行支持:
c#
,
.net
Dec 01 2025
唐青楓 -
C#.NET Record Struct 完全解析:語法、語義與最佳實踐
簡介
Record Structs 是一種值類型的記錄(record),結合了 struct 的值語義和 record 的功能(如自動生成相等性比較、不可變性支持)。它們是 C# 9.0 中引入的引用類型 record(默認 class)的擴展,專為性能敏感場景設計,特別是在需要棧分配或避免 GC 壓力的情況下。
核心特性
值類型:存儲在棧上(除非裝箱),避免堆分配,適合小數據結構。
不可變
c#
,
.net
Nov 27 2025
唐青楓 -
C#.NET 範圍與索引(Range、Index)完全解析:語法、用法與最佳實踐
簡介
C# 8.0 引入了範圍(Ranges)和索引(Indices)功能,提供了更簡潔、更直觀的語法來處理集合中的元素和子集。這些功能大大簡化了數組、字符串、列表等數據結構的操作。
索引(Indices)
從末尾開始的索引
使用 ^ 運算符表示從末尾開始的索引:
int[] numbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// 傳統方式獲取最後一個元素
c#
,
.net
Nov 25 2025
唐青楓 -
告別 if-else:C#.NET 模式匹配讓代碼更優雅的正確方式
簡介
模式匹配是 C# 7.0 開始引入的革命性特性,它提供了更簡潔、更強大的方式來檢查和提取數據中的信息。隨着每個版本的更新,模式匹配功能不斷強化,成為現代 C# 開發的核心特性。
模式匹配允許將輸入表達式與各種特徵進行匹配,支持多種模式類型。它主要用於:
is 表達式:檢查並可能聲明變量。
switch 語句:傳統分支邏輯。
switch 表達式:更簡潔的表達式形式(C# 8.0 引入
c#
,
.net
Nov 24 2025
唐青楓 -
一文理解 C#.NET Tuples:從基礎到高級應用
簡介
元組是 C# 中用於存儲一組固定數量、可能不同類型的值的數據結構。它是值類型(ValueTuple),在內存中分配於棧上(除非作為對象引用使用),因此性能較高。元組的主要用途是:
臨時組合數據,而無需創建專用類型。
從方法返回多個值。
在解構或模式匹配場景中簡化代碼。
C# 元組基於 System.ValueTuple 結構,引入於 .NET Framework 4.7 和 .NE
c#
,
.net
Nov 23 2025
唐青楓 -
C#.NET 集合表達式詳解:新時代的集合初始化方式
簡介
集合表達式(Collection Expressions)是 C# 12.0(隨 .NET 8.0 發佈於 2023 年)引入的一項新特性,用於以簡潔、聲明式的方式創建和初始化集合(如數組、列表、字典等)。集合表達式通過 [...] 語法提供了一種更直觀的方式來定義集合,減少樣板代碼並提高可讀性。
背景和作用
集合表達式旨在解決傳統集合初始化(如 new ListT { ... } 或 ne
c#
,
.net