C# 4.0 泛型協變與逆變深度解析(一):基本概念與多態性
定義 不變性:必須使用完全相符的型別。 協變性:可使用衍生型別替代基底型別(參數位置)。 逆變性:可使用基底型別替代衍生型別(回傳值位置)。 C# 的預設
C# 4.0 泛型協變與逆變深度解析(三):陣列的協變與逆變行為
陣列參數的協變性 參考型別陣列可視為協變:D[] 傳給 B[] 參數合法。值型別陣列(如 int[])則不可。 void PrintCollection(obj
C# 4.0 泛型協變與逆變深度解析(四):陣列與泛型集合的差異
陣列的不安全協變性 陣列為可變且具協變性:D[] 可傳給參數為 B[] 的方法(D : B)。但方法內若寫入 D2(同樣繼承 B),執行期會拋 ArrayTyp
C# 網路版鬥地主(一):出牌權限傳遞架構與 Player 類別設計
出牌順序與權限設計 出牌順序:Server → Client2 → Client1 → Server (循環)。使用 bool haveOrder 表示擁有出牌
C# 網路版鬥地主(二):伺服器與客戶端出牌權限傳遞邏輯
出牌按鈕事件 (btnLead_Click) private void btnLead_Click(object sender, EventArgs e) {
C# 網路版鬥地主(三):客戶端接收伺服器資料與出牌權限處理
Client 類別 - AcceptServerData 方法 public void AcceptServerData() { NetworkStre
C# 網路版鬥地主:出牌演算法與規則引擎實作 (第二部分) - 牌型判斷與大小比較
出牌規則引擎核心:牌型識別與比較邏輯 本文深入解析鬥地主最複雜的核心邏輯:根據出牌張數識別牌型、處理複雜組合 (順子、連對、飛機)、牌組標準化排序、以及大小比較
C# 網路版鬥地主:地主權限傳遞邏輯實作 (第一部分) - 隨機選定與權限啟動流程
地主權限傳遞總體設計與啟動流程 本系列第一部分,建立地主權限傳遞的核心邏輯框架:隨機選定預設地主、權限傳遞順序圖、Server 啟動權限分發、Client 接收
C# 網路版鬥地主:地主權限傳遞邏輯實作 (第二部分) - 叫地主按鈕與選擇結束處理
叫地主按鈕事件與選擇結束邏輯 承接上文,本文詳細說明玩家點擊「叫地主」後的完整處理流程,包含本地狀態更新、網路廣播、地主牌發放與 UI 同步。 「叫地主」按鈕
C# 網路版鬥地主:地主權限傳遞邏輯實作 (第三部分) - Server 端核心處理
地主權限傳遞:Server 端訊息處理核心 本文聚焦 Server 端處理「叫地主/不叫」邏輯的兩個接收執行緒 AcceptClient1Data、Accept
C# 網路版鬥地主網路通訊層實作詳解:Server/Client 架構與訊息轉發
網路架構總覽 採用經典 Server-Client 架構,Server 負責監聽連線、管理遊戲狀態、轉發訊息;Client 負責 UI 互動與 Server 通
C# 掃雷遊戲完整實作:從核心邏輯到 GDI+ 高效渲染
專案概述 作者花費一年多 C# 學習時間打造的掃雷遊戲,著重於核心演算法 (FloodFill)、GDI+ 雙緩衝渲染優化、狀態機設計與滑鼠事件處理技巧。 核
C# 網路版鬥地主開發實戰:從零到完整專案的心路歷程
專案背景與開發歷程 這是作者利用業餘時間斷斷續續開發一個月完成的 C# 網路版鬥地主遊戲。作為第一個網路程式專案,作者坦誠分享了從面向物件架構逐漸演變為功能導向
C# 設計模式系列:提供者模式 (Provider Pattern) 完整實作指南 - 總覽
提供者模式完整實作系列介紹 本系列文章詳細展示如何在 C# 中實作提供者模式,透過一個 Message 實體的資料存取案例,示範如何根據配置檔動態切換 SQL
C# 提供者模式實作第二部分:核心領域模型與抽象提供者基類
基礎建構:MessageModel 與 MessageProvider 抽象基類 提供者模式的基石在於清晰的領域模型定義與抽象契約。本文介紹核心實體 Messa
C# 提供者模式實作第三部分:SQL Server 資料提供者完整實作
SqlMessageProvider:SQL Server 資料存取提供者實作 SqlMessageProvider 是提供者模式中最常見的實作,針對 SQL
設計模式(C#):提供者模式(四)── XML 提供者實作
XMLMessageProvider 完整程式碼 using System; using System.Collections.Specialized; usi
C# 提供者模式實作第五部分:提供者集合與配置區段詳細解析
提供者基礎設施:集合類別與配置區段實作 提供者模式的運作仰賴兩大基礎設施:強型別提供者集合與自訂配置區段。本文詳細說明 MessageProviderColle