🚀 C# 介紹與環境設置
📌 什麼是 C#?
C#(讀作 "C Sharp")是由微軟(Microsoft)在 2000 年推出的現代化程式語言。 它是一種強型別、物件導向的語言,廣泛用於:
- 🌐 網頁應用(ASP.NET Core)
- 🖥️ 桌面應用(WPF、WinForms)
- 🎮 遊戲開發(Unity)
- 📱 手機應用(MAUI)
- ☁️ 雲端服務(Azure)
C# 的歷史
| 年份 | 版本 | 重要功能 |
|---|---|---|
| 2002 | C# 1.0 | 基本語言功能 |
| 2005 | C# 2.0 | 泛型(Generics) |
| 2007 | C# 3.0 | LINQ、Lambda |
| 2012 | C# 5.0 | async/await |
| 2019 | C# 8.0 | 可空參考型別 |
| 2023 | C# 12 | 主要建構子 |
C# 的特色
// C# 是強型別語言 — 每個變數都必須有明確的型別
int age = 25; // 整數型別
string name = "小明"; // 字串型別
bool isStudent = true; // 布林型別
// C# 支援自動記憶體管理(垃圾回收 GC)
// 你不需要手動釋放記憶體,GC 會幫你處理
📌 安裝開發環境
第一步:安裝 .NET SDK
.NET SDK 是開發 C# 程式的必備工具包。
# 到 https://dotnet.microsoft.com/download 下載最新版 .NET SDK
# 安裝完成後,打開終端機(Terminal)確認安裝成功
dotnet --version # 顯示已安裝的 .NET 版本號碼
第二步:安裝 VS Code
VS Code 是一個輕量但功能強大的程式碼編輯器。
# 到 https://code.visualstudio.com 下載 VS Code
# 安裝後,打開 VS Code 並安裝以下擴充功能:
# 1. C# Dev Kit — 提供 C# 語法高亮和智慧提示
# 2. .NET Install Tool — 管理 .NET 版本
第三步:確認環境
# 確認 dotnet 命令可以使用
dotnet --info # 顯示完整的 .NET 環境資訊
📌 第一個程式:Hello World
建立新專案
# 建立一個新的主控台應用程式(Console App)
dotnet new console -n MyFirstApp # -n 指定專案名稱
# 進入專案資料夾
cd MyFirstApp # cd 是切換目錄的命令
# 執行程式
dotnet run # 編譯並執行程式
程式碼詳解
// 這是 C# 最簡單的程式(頂層陳述式 Top-level statements)
// 從 C# 9 開始,你可以省略 namespace 和 Main 方法
// Console 是系統提供的類別,用來處理控制台輸入輸出
// WriteLine 是 Console 的方法,會印出文字並換行
Console.WriteLine("Hello, World!"); // 印出 Hello, World! 到螢幕
// 你也可以用 Write 方法(不換行)
Console.Write("你好,"); // 印出「你好,」但不換行
Console.Write("世界!"); // 接在同一行印出「世界!」
傳統寫法(了解即可)
// 這是 C# 9 之前的標準寫法
// using 關鍵字引入 System 命名空間
using System;
// namespace 定義命名空間,用來組織程式碼
namespace MyFirstApp
{
// class 定義一個類別
class Program
{
// Main 是程式的進入點(Entry Point)
// static 表示不需要建立物件就能呼叫
// void 表示這個方法不回傳任何值
// string[] args 接收命令列參數
static void Main(string[] args)
{
// 印出歡迎訊息
Console.WriteLine("Hello, World!");
}
}
}
📌 常用 dotnet 命令
# 建立新專案
dotnet new console -n 專案名稱 # 建立主控台應用程式
dotnet new webapi -n 專案名稱 # 建立 Web API 專案
dotnet new mvc -n 專案名稱 # 建立 MVC 網頁專案
# 管理專案
dotnet build # 編譯專案(將 C# 編譯成可執行檔)
dotnet run # 編譯並執行專案
dotnet clean # 清除編譯產生的檔案
# 管理套件(NuGet)
dotnet add package Newtonsoft.Json # 安裝 JSON 處理套件
dotnet list package # 列出已安裝的套件
dotnet remove package 套件名稱 # 移除指定套件
📌 字串插值(String Interpolation)
// 字串插值是 C# 6 引入的功能,用 $ 符號開頭
string name = "小明"; // 宣告一個字串變數
int age = 20; // 宣告一個整數變數
// 使用 $ 開頭,大括號 {} 內放入變數或運算式
Console.WriteLine($"我的名字是 {name},今年 {age} 歲");
// 輸出:我的名字是 小明,今年 20 歲
// 大括號內也可以放運算式
Console.WriteLine($"明年我就 {age + 1} 歲了");
// 輸出:明年我就 21 歲了
// 格式化數字
double price = 1234.5; // 宣告一個雙精度浮點數
Console.WriteLine($"價格:{price:C}"); // C 格式 → 貨幣格式
Console.WriteLine($"價格:{price:F2}"); // F2 格式 → 小數點兩位
📌 使用者輸入
// Console.ReadLine() 會等待使用者輸入一行文字
Console.Write("請輸入你的名字:"); // 提示使用者
string? input = Console.ReadLine(); // 讀取使用者輸入(可能為 null)
// 用 ?? 運算子提供預設值(當 input 為 null 時使用 "訪客")
string userName = input ?? "訪客";
// 印出問候語
Console.WriteLine($"歡迎你,{userName}!");
// 讀取數字(需要轉換型別)
Console.Write("請輸入你的年齡:"); // 提示使用者
string? ageInput = Console.ReadLine(); // 讀取字串
int userAge = int.Parse(ageInput ?? "0"); // 將字串轉成整數
// 更安全的寫法:TryParse(轉換失敗不會拋出例外)
Console.Write("請輸入你的身高(cm):"); // 提示使用者
string? heightInput = Console.ReadLine(); // 讀取字串
if (int.TryParse(heightInput, out int height)) // TryParse 回傳是否成功
{
Console.WriteLine($"你的身高是 {height} 公分"); // 轉換成功
}
else
{
Console.WriteLine("輸入的不是有效數字!"); // 轉換失敗
}
🤔 我這樣寫為什麼會錯?
❌ 錯誤:忘記安裝 .NET SDK
# 錯誤訊息:'dotnet' is not recognized
# 原因:還沒安裝 .NET SDK,或是環境變數沒設好
# 解法:到 https://dotnet.microsoft.com/download 下載安裝
❌ 錯誤:大小寫搞混
// ❌ 錯誤:C# 區分大小寫!
console.writeline("Hello"); // console 和 writeline 開頭應該大寫
// ✅ 正確:
Console.WriteLine("Hello"); // Console 和 WriteLine 首字母大寫
❌ 錯誤:忘記分號
// ❌ 錯誤:每行陳述式結尾都要加分號
Console.WriteLine("Hello") // 少了分號 → 編譯錯誤
// ✅ 正確:
Console.WriteLine("Hello"); // 記得加上分號 ;
❌ 錯誤:字串沒有用雙引號
// ❌ 錯誤:字串必須用雙引號包起來
string name = 小明; // 編譯器會以為 小明 是變數名稱
// ✅ 正確:
string name = "小明"; // 用雙引號包起來才是字串
❌ 錯誤:在錯誤的目錄執行 dotnet run
# ❌ 錯誤:不在專案資料夾中執行
# 錯誤訊息:Couldn't find a project to run
# 解法:先 cd 到包含 .csproj 檔案的資料夾
cd MyFirstApp # 切換到專案目錄
dotnet run # 再執行程式