首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 常見錯誤總結與最佳實務指南

     編輯:關於C語言

1. 字串拼接效能陷阱

錯誤:string sql = "select * from " + table + " where name='" + name + "'"; 產生多個中繼字串物件,增加 GC 壓力。

正確:使用 string.Format 或 StringBuilder。


string sql = string.Format("select * from {0} where name='{1}'", table, name);
// 或大量拼接時
var sb = new StringBuilder();
sb.Append("select * from ").Append(table).Append(" where name='").Append(name).Append("'");

2. 忽略內建 TryParse 驗證

錯誤:用 try { Convert.ToInt32(s); } catch { return false; } 判斷數值,例外處理開銷大。

正確:int.TryParse(s, out int val) 更快、更簡潔、無例外。

3. 手動 Dispose 時機不當

錯誤:在 finally 中 Close() + Dispose(),若 catch 區塊耗時 (如寫入錯誤日誌),連線釋放被延遲。

正確:使用 using 區塊,離開範圍自動呼叫 Dispose(),確保資源最早釋放。


using (var conn = new SqlConnection(connStr))
{
    conn.Open();
    // 執行命令
}

注意:實作 IDisposable 類別時,若無非受控資源,建議交給 GC 最終化釋放,避免干擾分代回收優化。

4. 公共欄位破壞封裝

錯誤:public string AccountNumber; 允許外部任意修改。

正確:使用唯讀屬性保護內部欄位。


private string _accountNumber;
public string AccountNumber { get { return _accountNumber; } }

5. 巢狀重複捕獲相同例外

錯誤:每層方法都 try-catch 同一例外並重新拋出,效能損耗累積。

正確:僅在頂層或需具體處理處捕獲,中間層不攔截或使用 throw; 保留堆疊追蹤。

6. 大資料量誤用 DataSet

錯誤:單表百萬筆資料載入 DataSet 佔用大量記憶體。

正確:使用 DataReader 逐列串流讀取,記憶體佔用恆定。視情境選擇:DataSet 適合離線、關聯、小資料量;DataReader 適合大量、唯讀、串流。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved