ref/out/unsafe 受控替代方案。. (無 ::、->)。namespace) 組織型別層級,using 匯入簡化名稱。
using System;
class HelloApp
{
static void Main()
{
Console.WriteLine("Welcome to C#!");
}
}
Main 為進入點,必須在類別/結構內,static,回傳 void 或 int。Console.WriteLine 輸出,Console.ReadLine 輸入。Console.WriteLine("Hello {0}", name);。
static void Main(string[] args)
{
Console.WriteLine($"參數個數: {args.Length}");
for (int i = 0; i < args.Length; i++)
Console.WriteLine($"Arg[{i}] = {args[i]}");
}
// 註解/* 註解 *//// XML 文件註解 (支援 IntelliSense 與文件產生器)。
class Constants
{
public const double PI = 3.14159; // 編譯期常數,隱含 static
}
struct Person
{
public string Name;
public uint Age;
public string Email;
}
class Demo
{
static void Main()
{
Person p;
p.Name = "Mike";
p.Age = 24;
p.Email = "mike@example.com";
Console.WriteLine($"姓名: {p.Name}, 年齡: {p.Age}, Email: {p.Email}");
}
}
結構 為值型別,堆疊配置,指派複製實體。適合小型資料群組。
enum WeekDay : byte { Sun=1, Mon, Tue, Wed, Thu, Fri, Sat }
// 預設底層型別 int,可指定 byte/short/long 等。
// 第一項預設 0,後續遞增 1,可手動指定值。
int[] a = new int[6] {1,2,3,4,5,6}; 或 string[] s = {"C","C++","C#"};int[,] m = {{1,2},{3,4}}; 存取 m[0,1]。int[][] jagged = new int[3][]; 每行長度可不同。Length 取得總元素數 (一維) 或各維度長度 (多維用 GetLength(d))。
// 一維遍歷
foreach (var item in arr) Console.WriteLine(item);
// 二維遍歷
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
Console.WriteLine(arr[i, j]);
| 別名 | .NET 型別 | 分類 |
|---|---|---|
object | System.Object | 所有型別的終極基底 (參考型別) |
string | System.String | 不可變字串 (參考型別,但行為似值型別) |
int | System.Int32 | 值型別 |
object 變數可裝箱任何值型別;string 支援 + 串聯、== 比較內容、[index] 存取字元。
delegate void Greeting(string name); // 宣告委派型別
class Program
{
static void Hello(string n) => Console.WriteLine($"Hello, {n}!");
static void Bye(string n) => Console.WriteLine($"Bye, {n}!");
static void Main()
{
Greeting g1 = Hello;
Greeting g2 = Bye;
Greeting g3 = g1 + g2; // 多點廣播
g3("Mike"); // 依序呼叫 Hello、Bye
Greeting g4 = g3 - g1; // 移除 Hello
g4("Mike"); // 僅呼叫 Bye
}
}
System.MulticastDelegate,支援 +/- 組合/移除。Invoke 或直接像方法)。掌握上述核心語法 (型別系統、控制流程、陣列、字串、委派) 即具備 C# 開發基礎。後續深入主題:泛型、LINQ、非同步/等待、模式比對、記憶體管理與 Span<T> 高效能程式設計。