C# 冒泡、快速、選擇、插入排序算法專案應用 (2) — 策略模式與實務建議
應用範例:汽車陣列依價格/名稱排序 public class Program { public static void Main() {
C# 基於大整數類的 RSA 算法實現 (2) — 公鑰加密與私鑰解密
公鑰加密(機密性) /// 透過公鑰加密 public byte[] EncryptByPublicKey(string dataStr) { RSA
C# 基於大整數類的 RSA 算法實現 (3) — 私鑰加密與公鑰解密
私鑰加密(簽名) /// 透過私鑰加密(簽名) public byte[] EncryptByPrivateKey(string dataStr) {
C# 基於大整數類的 RSA 算法實現 (4) — 加密實現
加密核心程式碼 /// /// 加密字串 /// /// 待加密字串 /// 密鑰大質數 (e 或 d) /// 大整數 N /// 加密後位元組陣列 p
C# 基於大整數類的 RSA 算法實現 (5) — 解密實現與關鍵細節
關鍵實現細節說明 分塊大小:理論最大 128 位元組,實際採用 120 位元組留餘量防止位溢出。 BigInteger 轉 byte[]:原用 GetByte
C# 3.0 編碼習慣與命名規範 (1) — Pascal/Camel 命名、前綴、介面/屬性/例外命名
1. PascalCase 命名:方法、類型、結構、介面、委派、列舉、列舉項、屬性、事件 public class DataGrid { public
C# 3.0 編碼習慣與命名規範 (2) — 變數命名、成員排序、命名空間、using 分組
8. 局部變數命名要有意義 避免 x, y, z 等無意義名稱。for 迴圈計數器可用 i, j, k, l, m, n(巢狀超過三層時應抽出方法)。 pub
C# 3.0 編碼習慣與命名規範 (3) — 目錄結構、大括號、自動屬性、var、物件初始化
16. 目錄結構反映命名空間層次 專案資料夾階層應與 namespace 階層對應,便於導航與維護。 17. 左大括號另起一行 public Sample(
C# 3.0 系列:匿名類型在 CLR 中的實現 (1) — 編譯器視角
語言特性,非框架特性 匿名類型是 C# 3.0 語言/編譯器 的新特性,對 .NET Framework 3.5 / CLR 而言,它與一般具名類型無本質差別。
C# 3.0 系列:匿名類型在 CLR 中的實現 (2) — 等值比較與類型共享
實測匿名類型的行為特徵 透過下列程式碼觀察 GetHashCode、Equals、==、ToString 及型別身分: class Program {
C# 3.0 系列:自動實作屬性 (1) — 從傳統寫法到語法糖
傳統寫法的痛點 C# 3.0 之前,定義一個公開屬性需要:私有欄位 + 公開屬性 + get/set 存取子: class Person { priva
C# 3.0 系列:自動實作屬性 (2) — 進階規則與限制
與抽象屬性的差異 自動實作屬性不能用 abstract 修飾: abstract class People { public abstract stri
C# 3.0 系列:擴展方法 (3) — 擴展介面類型
擴展介面:為所有實作類別統一新增功能 擴展方法不僅能擴展具體類別,也能擴展介面。這意味著所有實作該介面的類別都會自動獲得擴展方法,無需逐一修改各類別。 程式碼
C# 3.0 系列:物件初始化器與集合初始化器 (1)
為什麼需要物件初始化器? 在 C# 3.0 之前,建立物件並設定屬性通常需要多行程式碼: Staff s = new Staff(); s.Name = GUO
C# 3.0 系列:物件初始化器與集合初始化器 (2)
承上篇,我們繼續深入剖析集合初始化器的運作細節。核心概念很簡單: 編譯器會呼叫對應類別的建構函式建立一個暫存物件,然後設定屬性,最後加入集合。 集合初始化
C# 3.0 中的「多重繼承」模擬:擴展方法的進階探討 (2)
當實作類別定義了同名方法時會發生什麼? 我們繼續探討 C# 3.0 如何透過擴展方法為介面提供預設實作,以模擬多重繼承的效果。這次我們測試當實作類別本身定義了與
C# 3.0 對象與集合初始化器詳解(二):自定義構造函數調用語法與 Point 結構體重構
對象初始化器調用自定義構造函數 // 隱式默認構造 var p = new Point() { X = 100, Y = 200 }; // 顯式調用雙參數
C# 3.0 對象與集合初始化器詳解(四):自定義構造函數調用、Point 擴展色彩屬性、集合初始化器規則
對象初始化器中調用自定義構造函數 var p = new Point() { X = 100, Y = 200 }; // 默認構造 var p