C# 常用命名空間參考指南

筆記一些常用到的命名空間

1. 基礎核心命名空間

1
2
3
4
5
6
7
8
9
10
using System;                     // 基礎類型、例外處理
using System.Collections; // 非泛型集合
using System.Collections.Generic; // 泛型集合
using System.Linq; // LINQ 查詢
using System.ComponentModel; // 資料綁定、型別轉換
using System.Text; // 文字處理
using System.Text.RegularExpressions; // 正則表達式
using System.Globalization; // 地區和文化資訊
using System.Configuration; // 應用程式配置
using System.Runtime.Serialization; // 序列化

2. 檔案與 I/O 處理

1
2
3
4
5
6
7
using System.IO;                 // 檔案與目錄操作
using System.IO.Compression; // 檔案壓縮
using System.IO.Ports; // 序列埠通訊
using System.Xml; // XML 處理
using System.Xml.Linq; // LINQ to XML
using System.Xml.Serialization; // XML 序列化
using System.Xml.Schema; // XML Schema

3. 網路與 Web 開發

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Net;               // 基礎網路功能
using System.Net.Http; // HTTP 客戶端
using System.Net.Mail; // 電子郵件
using System.Net.Sockets; // TCP/IP 網路
using System.Web; // Web 應用程式
using System.Web.Http; // Web API
using System.Web.Mvc; // ASP.NET MVC
using Microsoft.AspNetCore; // .NET Core Web 應用
using Microsoft.AspNetCore.SignalR; // 即時通訊
using Microsoft.AspNetCore.Authentication; // 身份驗證
using Microsoft.AspNetCore.Authorization; // 授權
using Microsoft.Extensions.DependencyInjection; // 依賴注入
using Microsoft.Extensions.Configuration; // 配置
using Microsoft.Extensions.Logging; // 日誌

4. 資料庫存取

1
2
3
4
5
6
7
8
9
using System.Data;              // 資料庫通用功能
using System.Data.SqlClient; // SQL Server 連線
using System.Data.Entity; // Entity Framework
using Microsoft.EntityFrameworkCore; // EF Core
using Dapper; // Dapper ORM
using Microsoft.Data.Sqlite; // SQLite
using Npgsql; // PostgreSQL
using MongoDB.Driver; // MongoDB
using StackExchange.Redis; // Redis

5. 訊息佇列與事件匯流排

1
2
3
4
using RabbitMQ.Client;         // RabbitMQ
using Azure.Messaging.ServiceBus; // Azure Service Bus
using MassTransit; // MassTransit
using Microsoft.Azure.EventHubs; // Azure Event Hubs

6. 雲端服務整合

1
2
3
4
5
using Azure.Storage.Blobs;     // Azure Blob Storage
using Azure.Identity; // Azure 身份認證
using Amazon.S3; // AWS S3
using Amazon.SQS; // AWS SQS
using Google.Cloud.Storage.V1; // Google Cloud Storage

7. 效能與監控

1
2
3
4
5
using System.Diagnostics;       // 效能監控、事件記錄
using OpenTelemetry; // 分散式追蹤
using OpenTelemetry.Metrics; // 指標收集
using App.Metrics; // 應用程式指標
using Prometheus; // Prometheus 監控

8. 快取

1
2
3
using Microsoft.Extensions.Caching.Memory;  // 記憶體快取
using Microsoft.Extensions.Caching.Redis; // Redis 快取
using LazyCache; // 延遲快取

9. 背景工作

1
2
3
4
5
using Hangfire;               // 背景工作排程
using Quartz; // 工作排程
using Microsoft.Extensions.Hosting; // 託管服務
using System.Reactive; // 反應式程式設計
using System.Reactive.Linq; // Rx.NET

10. 測試相關

1
2
3
4
5
6
using Microsoft.VisualStudio.TestTools.UnitTesting; // MSTest
using Xunit; // xUnit
using NUnit.Framework; // NUnit
using Moq; // Mock 框架
using FluentAssertions; // 流暢的斷言
using AutoFixture; // 測試資料產生

使用情境範例

1. 檔案操作

1
2
3
4
5
6
7
8
using System.IO;
using System.Text;

// 讀取文字檔
string content = File.ReadAllText("file.txt", Encoding.UTF8);

// 寫入檔案
File.WriteAllText("output.txt", "內容", Encoding.UTF8);

2. 資料庫操作

1
2
3
4
5
6
7
8
using System.Data.SqlClient;

string connectionString = "連線字串";
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
// 執行 SQL 命令
}

3. HTTP 請求

1
2
3
4
5
6
7
using System.Net.Http;

using (var client = new HttpClient())
{
var response = await client.GetAsync("https://api.example.com");
string content = await response.Content.ReadAsStringAsync();
}

4. JSON 處理

1
2
3
4
5
6
7
using Newtonsoft.Json;

// 序列化
string json = JsonConvert.SerializeObject(object);

// 反序列化
var obj = JsonConvert.DeserializeObject<Type>(json);

4. 依賴注入設定

1
2
3
4
5
6
7
8
using Microsoft.Extensions.DependencyInjection;

public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IUserService, UserService>();
services.AddSingleton<ICacheService, RedisCacheService>();
services.AddTransient<IEmailSender, SmtpEmailSender>();
}

5. 非同步操作與取消

1
2
3
4
5
6
7
8
9
10
using System.Threading;
using System.Threading.Tasks;

public async Task ProcessDataAsync(CancellationToken cancellationToken)
{
await Task.WhenAll(
Task1Async(cancellationToken),
Task2Async(cancellationToken)
);
}

6. 分散式快取

1
2
3
4
5
6
7
using Microsoft.Extensions.Caching.Distributed;

public async Task<string> GetCachedDataAsync(IDistributedCache cache, string key)
{
return await cache.GetStringAsync(key) ??
await FetchAndCacheDataAsync(cache, key);
}

最佳實踐建議

  1. 命名空間組織

    • 按功能領域組織命名空間
    • 避免循環依賴
    • 保持命名空間結構扁平化
  2. 效能考量

    • 使用 global using 統一管理常用命名空間
    • 避免在熱路徑中動態載入組件
    • 注意命名空間引用對編譯時間的影響
  3. 相容性管理

    • 使用 #if 條件編譯符號處理不同框架版本
    • 定期更新套件版本
    • 維護最小相依性原則
  4. 安全性考量

    • 優先使用最新的安全性API
    • 避免使用已棄用的命名空間
    • 遵循最小權限原則
  5. 套件管理

    • 使用中央化的套件版本管理
    • 定期審查第三方套件的安全性更新
    • 建立套件使用規範