1. 程式就像一間有很多部門的辦公室
剛開始學寫程式的時候,會覺得只要一行一行寫下去就好了,反正都會動。但只要程式稍微複雜一點,腦袋就開始亂:哪裡是什麼、為什麼要這樣寫、如果要改一行,到底在哪裡?…
所以 C#,跟大多數現代語言一樣,給我們一種「把程式碼分類」的方法,讓你隨時都能搞懂程式在做什麼,也能很快找到你要改的地方。
想像一下公司。有 HR 部門、會計部、IT 部門、物流部門等等。每個部門有自己的責任、員工和任務。
在 C# 程式裡,每個這種「部門」就是一個類別。有的類別負責處理使用者,有的負責計算,有的負責檔案。
這是一個簡單專案的典型結構:
- Program.cs — 總公司:這裡是「進入點」,一切從這裡開始。
- User.cs — 處理和儲存使用者資料的部門。
- Calculator.cs — 計算部門。
- FileHelper.cs — 檔案專家。
就算是很小的程式,通常也會有至少一個類別。大型專案就是一棟有幾百個類別的「摩天大樓」!
2. 類別就是工具箱
C# 是物件導向語言,所有東西都是物件。物件的型別叫做類別。
類別就像一個箱子或櫃子,裡面放著我們需要的東西:變數、方法、屬性。想像一個寫著「鐵鎚」的箱子,裡面只放跟鐵鎚有關的工具。
class Example
{
// 這裡會放我們的工具:變數、方法、屬性
}
類別通常會有變數和函式。在 C# 裡,類別的變數叫做欄位,類別的函式叫做方法。但意思都一樣。
還記得我們的第一段程式嗎?
Console.WriteLine("大家好!");
string name = Console.ReadLine();
這段程式裡有類別也有方法:
- Console — 這是個類別,裡面有處理主控台的各種方法(函式)。
- WriteLine — 這是 Console 類別的方法,會把文字印到螢幕上。
- ReadLine — 這是 Console 類別的方法,會讀取鍵盤輸入。
其實寫程式就是一直寫自己的類別和方法,然後呼叫別的類別的方法。
3. 類別的欄位(變數)就是它的記憶體
在類別裡可以存變數(常叫「欄位」)。這就像記憶格子,把資料放進去。
class Counter
{
int value; // 欄位 — 這裡會存 Counter 的目前值
}
欄位讓類別在呼叫不同方法時能記住東西。比如記錄按鈕被按了幾次。
欄位可以有很多個。舉個例子:
class User
{
int id; // 使用者的唯一編號
string name; // 使用者名稱
int age; // 年齡
string adress; // 地址
User[] children; // 小孩
}
4. 方法 — 類別能做的事
方法就是我們類別的「技能」。如果類別是員工,方法就是他的本事:他會做什麼。
- 方法可以印東西到螢幕上。
- 計算兩個數字的和。
- 接收「輸入」資料並回傳結果。
方法的結構:
- 回傳值型別(例如 void — 不回傳東西,或 int — 回傳數字)
- 方法名稱(例如 Print)
- 括號裡的參數(可以沒有)
- 大括號 { ... } — 方法內容
class Printer
{
public void PrintHello()
{
Console.WriteLine("Hello!");
}
public int Add(int a, int b)
{
return a + b;
}
}
關於方法和相關細節,我們之後的課會再詳細講。
5. 屬性 — 聰明的變數
屬性(property)就像「升級版」的變數:不只存值,還能在取得或改變值時做點事。
舉個例子:你不能隨便改員工薪水 — 會計會檢查對不對。屬性也能「檢查」資料:
class Person
{
private int age; // 類別的變數(欄位)
public int Age // 屬性 Age。資料存到類別變數 age。
{
get { return age; } // get 方法 - 當有人要取得 Age 時會呼叫
set // set 方法 - 當有人要改 Age 時會呼叫
{
if (value >= 0)
age = value;
}
}
}
set 方法裡的程式碼不會讓你設負的年齡。屬性我們之後會再細講。
6. 存取修飾詞
在 C# 裡你可以決定類別的哪些部分能被其他類別看到,哪些只能自己用。這就是存取修飾詞。如果欄位、方法或類別前面有 public,那整個程式都能用它。
如果前面是 private,那只有自己類別裡能用。其他類別根本看不到,好像不存在一樣。
- public — 大家都看得到。這種方法和屬性可以給其他類別用。
- private — 只有自己類別裡看得到。這是內部細節,不給別人碰。
class Demo
{
public int OpenValue; // 外面看得到
private int secretValue; // 只有自己看得到
public void ShowOpen() { Console.WriteLine(OpenValue); }
private void HideSecret() { Console.WriteLine(secretValue); }
}
黃金法則:欄位通常設成 private,只把需要的方法和屬性(public)「公開」出去。
7. 真實的類別長怎樣
這是一個「組合」範例 — 迷你計算機:
class Calculator
{
private int result; // 存結果的欄位
public int Result
{
get { return result; }
private set { result = value; } // 只有類別內部能設
}
public void Add(int a, int b)
{
result = a + b;
}
public void Clear()
{
result = 0;
}
}
這種寫法幾乎所有現代 C# 程式都會用!
8. Top-level statements
其實在 C# 裡,所有程式碼都在類別裡。類別是最小的程式單位。你可以有很多類別,但至少要有一個。
等等,那我們剛剛寫的那些程式,明明沒看到類別啊?!
這就是 C# 新潮的功能:你可以直接寫沒類別的程式,C# 編譯器會自動幫你包成類別。
假設你在 Program.cs 裡寫這樣的程式:
// 你的程式碼
WriteSmile();
WriteSmile();
WriteSmile();
//你自己的函式
void WriteSmile()
{
Console.WriteLine(":)");
}
C# 編譯器會把它變成這樣:
using System;
class Program
{
static void Main() // 你的程式碼
{
WriteSmile();
WriteSmile();
WriteSmile();
}
static void WriteSmile() //你自己的函式
{
Console.WriteLine(":)");
}
}
如果你只看懂一半也沒關係:重點是你抓到大意。接下來的課我們會一步步拆解這些內容。
GO TO FULL VERSION