C#(讀作 "C Sharp")是微軟於 2000 年隨 .NET Framework 推出的現代化、型別安全、物件導向程式語言。由 Anders Hejlsberg(Turbo Pascal、Delphi 之父)主導設計,吸收了 C++ 的強大表達力、Java 的跨平台理念與垃圾回收機制、Visual Basic 的開發效率,並針對 Windows 平台深度優化。微軟宣稱:「C# 是開發 .NET 應用程式的最佳語言。」
| 維度 | Java | C# |
|---|---|---|
| 平台目標 | Write Once, Run Anywhere(跨平台優先) | Windows First,後透過 .NET Core/.NET 5+ 達成跨平台 |
| 執行模型 | JVM 解譯/即時編譯 Bytecode | CLR JIT 編譯 IL 為原生碼 |
| 語言特性 | 保守演進,近年加入 Lambda、Record、Pattern Matching | 激進創新:Property、Event、Delegate、LINQ、async/await、Span、Nullable Reference Types |
| 生態系統 | 多廠商 JVM、龐大開源生態 | 微軟主導,NuGet 套件管理,Visual Studio 整合度極高 |
| 非受控互操作 | JNI 複雜、效能差 | P/Invoke、Com Interop、unsafe 區塊、C++/CLI 無縫整合 |
| 屬性/事件 | 慣例命名(getX/setX, addListener) | 語言內建 property、event 關鍵字 |
微軟曾開發 J++ 並擴展 Java,因 Sun 訴訟授權問題轉而自創 C#。C# 可視為「針對 Windows 平台優化、語法更現代的 Java 變體」,早期甚至被戲稱為「Microsoft Java」。
struct, enum, 基本型別(int, double, bool...) → 儲存在 Stack,複製語意class, interface, delegate, string, array → 儲存在 Heap,參考語意object,支援裝箱/拆箱List<T> 執行階段具象化,避免類型擦除,效能優於 Java 泛型| 版本 | 里程碑特性 |
|---|---|
| C# 1.0 (2002) | 類別、介面、委派、事件、屬性、索引子、屬性、unsafe |
| C# 2.0 (2005) | 泛型、迭代器、匿名方法、可為 null 型別、partial 類別 |
| C# 3.0 (2007) | LINQ、Lambda 運算式、擴充方法、隱含型別、物件初始化、自動屬性、匿名型別 |
| C# 4.0 (2010) | 動態繫結、具名/選用參數、共變/反變、COM 互操作改進 |
| C# 5.0 (2012) | async/await、呼叫端資訊屬性 |
| C# 6.0 (2015) | 字串插值、nameof、null 條件運算子、唯讀自動屬性、例外過濾器 |
| C# 7.0~9.0 | Tuple、模式比對、區域函式、ref 回傳、Record、Init-only、Top-level statements |
| C# 10.0~12.0 | Global using、檔案範圍命名空間、Required 屬性、泛型數學、Primary constructors |
dotnet new console -n HelloWorld
cd HelloWorld
dotnet run
輸出:Hello, World!
dotnet add package Newtonsoft.Json 或 VS 圖形介面using System; // 匯入命名空間
namespace HelloWorld // 邏輯分組,避免名稱衝突
{
class Program // 類別定義
{
static void Main(string[] args) // 進入點,單一執行緒啟動
{
Console.WriteLine("Hello, World!"); // 靜態方法呼叫
Console.ReadKey(); // 防止主控台立即關閉
}
}
}
using:匯入命名空間或別名,using static 可匯入靜態成員namespace:組織類別,不影響執行階段型別名稱class:參考型別藍圖,支援繼承、介面、泛型static:屬於型別而非實例,Main 必須為 staticvoid:無回傳值string[] args:命令列參數陣列C# 從「Windows 專屬語言」演進為「跨平台、高效能、開發體驗極佳的現代語言」。其設計平衡了理論嚴謹性與工程實用性,擁有業界頂尖的工具鏈與生態系統。掌握 C# 核心特性與 CLR 運作機制,配合持續演進的語法功能,能讓開發者在雲端、桌面、行動、IoT 等領域高效交付高品質軟體。下一章將深入探討 Visual Studio 開發環境實戰與專案結構。