C# 序列化與反序列化完整教學:BinaryFormatter、JSON、XML 與效能比較
什麼是序列化? 序列化是將物件圖轉換為位元組序列(或文字),以便儲存至檔案、資料庫、傳輸至網路;反序列化則是還原物件。常見格式:二進位、JSON、XML、Pro
C# 多執行緒傳遞參數完全指南:ParameterizedThreadStart、Lambda、Task 與最佳實務
為什麼需要傳遞參數? 執行緒啟動後執行的方法若需外部資料(連線字串、檔案路徑、使用者輸入),必須透過參數傳入。早期 ThreadStart 無參數,開發者常用欄
C# 委派入門精講:從單播到多播、泛型委派與實戰篩選範例
什麼是委派? 委派是「方法的型別安全參考」,相當於 C++ 的函式指標,但型別安全、支援多播。核心用途:將方法作為參數傳遞、實作回呼、事件模型基石。 宣告與實
C# 執行 CMD / DOS 指令完整教學:Process.Start 參數詳解與非同步讀取輸出
應用場景 啟動外部程式(如 mstsc 遠端桌面、ping、ipconfig)。 執行批次檔(.bat/.cmd)自動化部署、備份。 捕獲指令輸出
C# GDI+ 圖片縮放、旋轉、裁切完整指南:Bitmap 與 Graphics 實戰
前言 System.Drawing 命名空間提供 Bitmap、Graphics、Image 等核心類別,支援載入、繪製、轉檔、幾何變換等常見圖片處理需求。本文
C# AOP 實戰:使用 RealProxy 攔截 ORM 實體屬性 Setter 實現自動賦值
背景與痛點 在 ORM 框架開發中,常需在實體屬性 set 時同步更新另一個物件(如變更追蹤、快照、同步至 DTO)。傳統做法要求每個屬性手動呼叫基類方法:
C# 多態核心:虛方法、Override 與 New 關鍵字深度解析(附面試題詳解)
前言 「虛方法呼叫哪個實作?」是 C# 面試必考題,也是理解多態機制的關鍵。本文從 CLR 物件建立流程切入,詳細解析 virtual、override、new
C# 透過 WMI 讀取 CPU 與硬碟序號:System.Management 實戰範例
前言 在軟體授權、硬體綁定或資產管理場景中,常需取得電腦唯一識別碼。C# 可透過 System.Management 命名空間查詢 WMI(Windows Ma
C# 入門實作:打造自己的簡易繪圖程式(GDI+ 完整教學)
專案目標 建立一個 Windows Forms 應用程式,支援在視窗上繪製矩形、橢圓、直線、自由筆觸、文字、橡皮擦,並具備新建、開啟、儲存(BMP)功能。本文將
C# 陣列中找出出現次數最多的元素:Dictionary 統計法完整教學
前言 在 C# 開發中,統計陣列或集合中元素出現的頻率是常見需求。本文將示範如何使用 Dictionary<TKey, TValue> 高效完成此任
C# 確保應用程式單一實例執行的正確實作方式
前言 在開發 Windows 應用程式時,常會有「只允許運行一個實例」的需求。若使用者嘗試再次啟動程式,應自動偵測並終止新啟動的進程。最常見的做法是在 Main
C# XPath SelectNodes 陷阱:XmlNodeList 延遲評估導致節點替換後計數異常
問題重現 使用 XmlNode.SelectNodes 取得節點清單,隨後對父節點進行 ReplaceChild,再讀取 XmlNodeList.Count 時
C# 呼叫批次檔:Process 類別啟動外部程式與參數傳遞完整範例
基本啟動模式 using System.Diagnostics; var process = new Process(); process.StartInf
C# 泛型入門:型別參數化與程式碼重用核心觀念
什麼是泛型? 泛型允許在定義類別、介面、方法、委派時,**延遲指定具體型別**,改用**型別參數** (Type Parameter) 佔位。實際使用時再提供具
C# 前置處理器指令完整指南:#define、#if、#region、#pragma 等條件編譯技巧
前置處理器指令總覽 指令用途常見場景 #define定義條件編譯符號DEBUG、TRIAL、FEATURE_X #undef取消定義符號區塊內暫時關閉功
C# 防止程式多重啟動:以組件 GUID 為唯一識別碼的實作方案
方案比較 方法優點缺點 Mutex (互斥體)跨進程同步、核心物件、支援跨會話名稱衝突風險、權限問題、拋棄處理複雜 Process.GetProcess
C# 型別系統核心:基元型別、值型別、參考型別、裝箱拆箱完整圖解
型別分類總覽 C# 型別系統 ├── 值型別 (Value Type) → 繼承 System.ValueType → 配置於 Stack │ ├── 基