C# ref 與 out 差異深度解析:值類型與參考類型的參數傳遞行為
核心結論 ref:呼叫端必須先初始化變數;被呼叫端可讀寫,修改會反映回呼叫端。適用於「輸入/輸出」參數。 out:呼叫端不需初始化;被呼叫端必須指派值才能返回
C# 封裝百度地圖 Web 服務 API:地理編碼、座標轉換、POI 搜尋
專案架構 將百度地圖開放平台多項 REST API 封裝為強型別 .NET 類別庫,支援: 地理編碼(地址→經緯度)與反地理編碼 座標系統轉換(GPS→百度墨
DICOM 網路通訊入門(二):關聯協商細節與 Echo SCU 完整實作
關聯協商核心概念 DICOM 通訊雙方(SCU/SCP)必須先就兩項達成共識: 抽象語法:溝通的「主題」(如 Verification、Storage、Pri
人還是比機器聰明:動態生成 IL 代碼的簡單示範
標題雖具哲理,實則展示一段使用 System.Reflection.Emit 動態產生 IL 代碼的片段,比較人工撰寫邏輯與編譯器生成代碼的差異。 代碼片段
DICOM 網路通訊入門(一):PDU 結構與關聯建立
前言 DICOM 標準抽象層次高、術語多(Service Class、SOP、PDU 等),初學者極易迷失。本系列從最底層的 PDU (Protocol Dat
C# 透過 EWS Managed API 查詢 Outlook 郵件是否存在
功能說明 使用 Exchange Web Services (EWS) Managed API 連線至 Exchange Server,依指定信箱與主旨搜尋收件
[連載] C# 程式設計(08)核心篇 - 方法詳解
本篇為連載教學第 08 章,主題為 C# 核心程式設計中的「方法」完整解說。原內容以投影片圖片形式呈現,涵蓋以下重點: 方法的定義與呼叫語法 參數傳遞:值傳
跨平台資料庫操作基類:支援 Windows/Linux Mono、MySQL/Oracle/SQL Server
專案定位 分步式聊天系統與線上直播系統的共用資料存取層,設計目標: 跨平台:Windows 與 Linux Mono 環境皆可運行。 多資料庫支援:MySQL
改善 C# 程式設計的 50 個建議(31-35):排序、複製、遮蔽、多載與 PLINQ
建議 31:實作 IComparable<T> 與 IComparer<T> 定義排序關係 類型需支援排序與查詢時,應實作 ICompa
優雅的資料上傳介面設計:結合責任鏈與模板方法模式
前言 網路上設計模式文章多針對單一模式講解,但實務專案往往需組合多種模式。本文分享一個真實資料上傳介面的設計思考過程,展示如何靈活運用責任鏈、模板方法、組合模式
網頁資料擷取實戰:從 HTTP 請求到結構化資料轉換
專案背景 曾參與比價系統開發,需抓取競品網站商品價格並對應自家商品;另曾協助撰寫去哪兒網機票最低價抓取程式。本文提供完整 Demo 原始碼(C# / VS201
使用 Sandcastle Help File Builder 產出 MSDN 風格技術文件
工具簡介 Sandcastle 是微軟開源專案,能從 XML 註解與組件 DLL 產生技術文件。為方便使用,推薦搭配 GUI 介面的 Sandcastle He
USBClassLibrary:C# 偵測 USB 裝置插拔事件的完整解決方案
專案簡介 這是一個以 C# 開發的 USB 類別庫,能管理 USB 裝置的連接與分離事件,並偵測特定裝置(依 VID/PID 識別)。支援 Windows XP
ThreadStatic 在物件快取中的巧妙應用:以 StringBuilderCache 為例
ThreadStatic 特性回顧 [ThreadStatic] 標記的靜態欄位,對每個執行緒皆擁有獨立儲存空間。簡單說:僅適用於靜態欄位,且每個執行緒獨立儲存
CKRule 規則引擎:解決多變業務邏輯的最佳實踐
何謂「多變業務」? 開發系統時,常遇到以下棘手情境: 類型問題描述典型範例 結構化規則業務規則來自一或多個表格,欄位間有條件與結果關係會員積分等級表、停車費
BackgroundWorker 元件封裝實戰:簡化非同步與進度回報
前言 在開發小型程式或 Demo 時,常需以非同步、多執行緒處理耗時工作並即時回報進度。.NET 提供的 BackgroundWorker(位於 System.
C# 非同步 Socket 伺服器完整實作指南
前言 在 .NET 專案中,若需建立高效能的內部執行緒通訊機制,且專案包含 ASP.NET、Windows Forms 與主控台應用程式等多類型服務端與客戶端,
基於 NPOI 的 Excel 模板映射實體類:特性標記 + 通用解析器實現
利用 NPOI 讀取 Excel 模板,通過特性標記實體屬性與列的對應關係,構建通用 XlsFileHandler<T> 實現「模板→實體列表」的零