// HelloWorld.cs
using System; // 導入 System 命名空間,簡化 Console 等類別引用
class HelloWorld { // 類別宣告,C# 所有程式碼皆在類別內
static void Main() { // 程式進入點:static、void、大寫 M
Console.WriteLine("Hello World !"); // 呼叫靜態方法輸出
}
}
| 規則 | 說明 |
|---|---|
| 封裝於類別/結構 | C# 純物件導向,無全域函式 |
| static | 無需實例即可執行 |
| 存取修飾詞不限 | public/private/protected 皆可,慣用 public |
| 名稱大寫 M | C# 大小寫敏感,Main 才具進入點語意 |
| 參數形式 | 無參或 string[] args,其他形式無進入點語意 |
| 回傳型別 | void 或 int,其他無進入點語意 |
csc HelloWorld.cs 產生 HelloWorld.exe,實為 PE (Portable Executable) 格式,內含:
ldstr、call、ret。
.class private auto ansi beforefieldinit HelloWorld
extends [mscorlib]System.Object
{
.method public hidebysig static void Main() cil managed
{
.entrypoint
.maxstack 8
IL_0000: ldstr "Hello World !"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret
}
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
}
}
.ctor() 呼叫 Object.ctor()。System.Object。.exe,OS 載入 PE Header。mscoree.dll!_CorExeMain。_CorExeMain 啟動 CLR,逐方法將 IL 即時編譯(JIT)為原生機器碼,執行並快取。