1. C# 專案的基本結構
你的程式不是只有一個檔案,而是一堆檔案、資料夾和設定組成的集合。C# 是強型別語言,對大型應用來說,保持一切有條理很重要。如果你忽略專案結構,你的程式碼很快就會變成電子迷宮,連自己寫的 "Hello, World!" 都找不到。
而且,懂專案結構這件事,在面試時會被加分。就像你知道家裡鑰匙和遙控器放哪一樣——生活會簡單很多!
舉個例子,想像我們的 C# 專案是一個有分格的箱子:
MyFirstConsoleApp/
├── MyFirstConsoleApp.csproj
├── Program.cs
├── Properties/
│ └── launchSettings.json
├── bin/
│ └── ...(這裡會放編譯好的程式)
├── obj/
│ └── ...(這裡會放編譯過程中的暫存檔)
結構細節:
| 名稱 | 用途 |
|---|---|
|
專案檔案:你整個程式的「護照」,所有專案設定都寫在這。 |
|
主檔案,有進入點 (Main)。通常你會在這裡寫第一行程式碼。 |
|
專案設定資料夾,例如 IDE 的啟動方式。 |
|
「成品籃」——編譯好的執行檔會放這裡。 |
|
編譯過程中的內部暫存檔(就像寫小說時的草稿,通常不會去看)。 |
2. 專案檔案 (.csproj)
副檔名是 .csproj 的檔案,就是專案的心臟和大腦。這裡記錄所有全域設定:語言版本、相依套件、要編譯哪些檔案、連了哪些 package 等等。切換到 Solution Explorer 的 Files 分頁看看。
Console 應用程式的範例檔案:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
- <TargetFramework>net9.0</TargetFramework> —— 表示這個專案是給 .NET 9 用的。
- <OutputType>Exe</OutputType> —— 代表會產生執行檔(Windows 下是 .exe)。
- <PropertyGroup> 區塊裡放主要參數。
- 你可以在這檔案加 NuGet 套件、改編譯設定、開關功能。
3. 主程式檔案:Program.cs
如果把專案比喻成劇場,Program.cs 就是舞台,其他檔案都是幕後。這裡有所謂的「進入點」—— Main 方法。
// Program.cs
using System;
namespace MyFirstConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("哈囉,世界!");
}
}
}
- namespace —— 命名空間,幫你分組 class,避免名稱衝突。
- class Program —— 主要 class,裡面有 Main 方法。
- static void Main(string[] args) —— 必備進入點,程式從這裡開始跑。
- Console.WriteLine() —— 你已經很熟的「對世界說話」方法。
更新我們的應用程式
回想一下之前的課,我們做過一個小 app,會問使用者名字然後打招呼。範例如下:
// Program.cs
using System;
namespace MyFirstConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.Write("請輸入你的名字: ");
string name = Console.ReadLine();
Console.WriteLine($"歡迎, {name}! Live long and prosper.");
}
}
}
執行專案: 點一下綠色的 ▶️ Run 按鈕。
如果一切順利,下面會出現 Run 分頁。 你會看到程式已經啟動,並等你回答 請輸入你的名字:。直接在 console 輸入名字(例如 "Cat")然後按 Enter。
按下 Enter 之後,程式會處理你的輸入,然後顯示帶你名字的歡迎訊息。程式結束,結果就出來了。
4. 怎麼寫自己的程式碼:基本規則
要在哪裡寫程式碼?
一開始主要邏輯最好都寫在 Program.cs 的 Main 方法裡。等應用變大再慢慢加新檔案和 class,現在先別急,最有趣的都在這裡發生。
在 Main 裡可以(和不可以)做什麼?
- 可以:宣告變數、寫運算、呼叫方法、輸出/讀取資料。
- 不可以:在方法或 class 外面寫程式碼(例如直接寫 Console.WriteLine("Hello"); 在 Main 外面——這樣不行!)。
註解
寫註解給自己和別人看。單行註解用 //,多行註解用 /* ... */。越容易猜出你為什麼寫這段神祕程式碼越好。
// 這是一行註解
/*
這是—
多行註解。
*/
5. 程式怎麼執行?
你的程式永遠從 Main 方法開始執行。Main 之前的東西都會被忽略。想在啟動時做什麼?就寫在 Main 裡。
範例——簡化流程圖(程式碼 → 執行):
程式開始
|
v
Main 方法
|
v
依序執行 Main 裡的指令
|
v
程式結束
6. 應用怎麼長大:加新檔案
什麼時候該加新檔案?
當你的程式碼一頁放不下,變數也記不住時,就是該拆開來寫的時候了。
舉例:你做計算機,可以新建一個 Calculator.cs,把相關 class 搬過去。
MyFirstConsoleApp/
├── Program.cs
├── Calculator.cs // 新檔案,放計算機邏輯
在 Rider 裡怎麼加新檔案
- 在 Solution Explorer 樹狀圖裡,右鍵點專案 → "Add" → "New File"(或 "New Class")。
- 給檔案取個有意義的名字。
- 在檔案裡寫新 class 或 function。
// Calculator.cs
namespace MyFirstConsoleApp
{
class Calculator
{
public static int Add(int a, int b)
{
return a + b;
}
}
}
然後在 Program.cs 用它:
// Program.cs
using System;
namespace MyFirstConsoleApp
{
class Program
{
static void Main(string[] args)
{
int sum = Calculator.Add(2, 3); //用 Calculator class 的 Add 方法
Console.WriteLine($"2 + 3 = {sum}");
}
}
}
7. 「編譯」和「執行」——底下發生什麼事?
當你按下 Run(或 F5),IDE 會:
- 檢查語法,把你的程式碼編譯成二進位檔(.exe 或 .dll),放到 bin/Debug/net9.0/ 或 bin/Release/net9.0/。
- 執行編譯好的檔案。
- 把結果輸出到你看到的 terminal/console。
bin/ 和 obj/:這些資料夾幹嘛用?
- bin/ —— 這裡放你的成品(編譯好的程式)。
- obj/ —— 這裡放暫存檔,編譯器用來做中間運算。
通常這兩個資料夾可以直接忽略,內容會自動重建。
8. 寫程式和專案常見錯誤
寫程式不是亂敲鍵盤。只要出現像 CS5001: Program does not contain a static 'Main' method suitable for an entry point 這種錯誤,大家就會開始瘋狂 Google,IDE 也會用更難懂的語言罵你。
- 常見錯誤之一——程式碼寫在方法或 class 外面。在 C# 裡不能直接把表達式寫在檔案裡。所有東西都要包在 class 和方法裡!
- 檔名和 class 名字不一樣。雖然可以這樣做,但最好讓檔案和 class 名字一致、好懂——對你和未來同事都方便。
- 命名空間搞混。如果你在不同 namespace 建了 class,記得用 using 把它引進來。
- 忘記進入點。如果你刪掉或改名 Main 方法,程式就跑不起來。
GO TO FULL VERSION