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

C# 核心語法與進階特性速成教程

     編輯:Java 相關知識

C# 核心語法與進階特性速成教程

C# 是 .NET 平台上主流的強型別、物件導向程式語言。本教程針對具備程式基礎的開發者,快速梳理 C# 核心語法、資料結構、控制流程、物件導向、泛型、LINQ、非同步與現代特性,助你在短時間內上手實戰開發。

基礎類型與變數

// 數值類型
int i = 42; long l = 100L; double d = 3.14; decimal m = 19.99m; // 金融計算用 decimal
bool flag = true;
char c = 'A';

// 字串 (參考類型,不可變)
string s = "Hello\nWorld\t!"; 
string raw = @"C:\Path\To\File"; // 逐字字串
string interpolated = $"{i} + {d} = {i + d}"; // 字串插值

// 陣列 (固定長度)
int[] arr = new int[10];
int[] arr2 = { 1, 2, 3 };

// 列表 (動態陣列,泛型)
var list = new List { 1, 2, 3 };
list.Add(4); list[0] = 10;

// 字典 (雜湊表)
var dict = new Dictionary { ["key"] = 1 };
dict["new"] = 2; int v = dict["key"];

控制流程

// if-else / 三元運算
var max = (a > b) ? a : b;

// switch 表達式 (C# 8+)
var season = month switch { 12 or 1 or 2 => "Winter", 3..5 => "Spring", _ => "Other" };

// 迴圈
foreach (var item in collection) { ... }
for (int i = 0; i < 10; i++) { ... }
while (cond) { ... }

類別與物件導向

public class Person {
    // 自動屬性 (含建構子參數 C# 12+)
    public string Name { get; init; } // 僅初始化可設定
    public int Age { get; set; }
    
    // 建構子
    public Person(string name, int age) => (Name, Age) = (name, age);
    
    // 方法
    public void Greet() => Console.WriteLine($"Hi, I'm {Name}");
    
    // 解構子 (支援解構賦值)
    public void Deconstruct(out string name, out int age) => (name, age) = (Name, Age);
}

// 繼承與多型
public class Student : Person {
    public string School { get; set; }
    public Student(string name, int age, string school) : base(name, age) => School = school;
    public override void Greet() => Console.WriteLine($"Student {Name} from {School}");
}

介面與抽象

public interface ISerializable {
    string Serialize();
    void Deserialize(string data);
}

// 介面預設實作 (C# 8+)
public interface ILoggable {
    void Log(string msg) => Console.WriteLine($"[LOG] {msg}"); // 預設實作
}

泛型與集合操作 (LINQ)


// 泛型方法
public static T Max(T a, T b) where T : IComparable 
    => a.CompareTo(b) > 0 ? a : b;

// LINQ 查詢語法 vs 方法語法
var adults = people.Where(p => p.Age >= 18).OrderBy(p => p.Name).ToList();
var names = from p in people where p.Age >= 18 select p.Name;

// GroupBy 分組統計
var stats = people.GroupBy(p => p.City)
                  .Select(g => new { City = g.Key, Count = g.Count(), AvgAge = g.Average(p => p.Age) });

現代 C# 必殺技

  • Nullable 參考類型 (C# 8):string? name = null; 編譯期警告空參考風險。
  • Record 類型 (C# 9):record Person(string Name, int Age); 不可變資料載體,自帶值語意相等比較。
  • Pattern Matching (C# 7+):if (obj is Person { Age: >= 18 } p) ... 型別測試與屬性萃取合一。
  • 非同步串流 (C# 8):await foreach (var item in GetAsync()) 處理非同步資料流。
  • Source Generators (C# 9):編譯期產生程式碼,減少反射效能損耗。

資源管理與例外處理

// using 宣告 (C# 8) 自動 Dispose
using var fs = File.OpenRead("data.txt");
using var reader = new StreamReader(fs);
// 离开作用域自動釋放

// try-catch-finally
try { ... }
catch (IOException ex) when (ex.HResult == -2147024894) { ... } // 例外篩選器
finally { ... }

實用工具與生態系

  • NuGet:套件管理器,dotnet add package Newtonsoft.Json
  • Entity Framework Core:ORM,Code-First 遷移資料庫。
  • ASP.NET Core:跨平台 Web API 框架,內建 DI、Middleware、OpenAPI。
  • xUnit / NUnit:單元測試框架。
  • BenchmarkDotNet:效能基準測試。

學習路線建議

  1. 掌握語法基礎 → 2. 物件導向設計模式 → 3. LINQ 與集合操作 → 4. 非同步程式設計 (async/await) → 5. ASP.NET Core Web API 實戰 → 6. EF Core 與資料庫整合 → 7. 容器化部署
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved