共用方式為


C# 程式的一般結構

小提示

剛開始開發軟體嗎? 先從 入門 教學開始。 他們會先帶你寫第一批 C# 程式,然後再學程式結構。

有其他語言的經驗嗎? 你可以先瀏覽 C# 專用語法的 「開始」 部分,然後再回來這裡。

你從這些核心建構模組來建構 C# 程式:命名空間組織你的型別、型別(類別、結構體、介面、枚舉和代理),定義行為與資料,而敘述和表達式則在執行時執行。 你如何設計入口點,取決於你選擇的應用程式風格。

選擇你的申請風格

當你建立 C# 程式時,請做出兩個獨立的結構選擇:

  • 是檔案型還是專案型?
    • 一個檔案式應用程式是從單一 .cs 檔案執行,沒有專案檔案。
    • 專案型應用程式使用 .csproj 檔案,並可跨越多個原始檔案。
  • 是頂層陳述還是 Main 方法?
    • 頂層語句讓你能直接在檔案頂端寫出可執行程式碼。
    • 方法 Main 會將入口點包裹在明確的靜態方法中。

專案式應用程式與檔案式應用程式皆支援任一入口點式樣式。

檔案式應用程式與專案式應用程式的比較

從 C# 14 和 .NET 10 開始, 基於檔案的應用程式 允許你在單一檔案中執行包含 *.cs 的程式,而非專案檔案。 請將以下程式碼儲存在一個名為 hello-world.cs 的檔案中,然後使用 dotnet run hello-world.csdotnet hello-world.cs 執行它:

#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");

備註

#! 線可讓 Unix shell 直接執行該檔案。 在任何 Unix 系統上,設定執行+x()權限,並從命令列執行該檔案。

檔案式應用程式支援所有 C# 語法,並可使用 預處理器指令 來配置建置系統。 使用檔案型應用程式來製作小型命令列工具、原型和實驗。 基於檔案的應用程式由目錄中的單一檔案組成:

my-app/
└── hello-world.cs

專案型應用程式 使用 .csproj 檔案和 .NET CLI 指令dotnet newdotnet build以及 dotnet run 工作流程。 當您的程式跨多個檔案或需要細緻的建置設定時,請選擇專案型應用程式。 專案型應用程式包含一個專案檔案與一個或多個原始碼檔案:

my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│   └── Person.cs
└── Services/
    └── GreetingService.cs

如果你的檔案型應用程式成長,可以輕鬆轉換成專案型應用程式。 執行 dotnet project convert 以從你現有的原始檔案產生專案檔案。

如果你一開始就知道你的應用程式需要多個原始檔案,建議從專案型應用程式開始。 你省去了轉換步驟,可以立刻把程式碼整理成獨立檔案。

頂層語句與 Main 方法

透過使用 頂層語句,你可以直接在一個檔案中撰寫可執行程式碼,而不必將其包裝成類別與 Main 方法。 這種樣式是你建立新 dotnet new console控制台應用程式時的預設格式。 以下範例展示了一個使用 頂層語句的現代 C# 程式:

Console.WriteLine("Hello, World!");

namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }
}

專案中只有一個檔案可以有頂層語句,入口點是該檔案中程式的第一行文字。 隨著你建立更大的程式,你會加入更多程式元素。

你也可以定義一個明確的靜態 Main 方法作為程式的入口點:

// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

這兩種入門式樣式都能適用於檔案型和專案型應用程式。 兩種風格都支援相同的功能。

建置和執行 C# 程式

C# 是 編譯 的語言。 對於專案型應用程式,請使用 dotnet build 指令將原始碼檔案編譯成二進位套件。 用dotnet run來進行編譯並運行。 dotnet.NET SDK 中包含的 CLI 提供了許多工具來建立、建置和管理 C# 專案。

對於基於檔案的應用程式,直接 dotnet run hello-world.cs 編譯並執行單一檔案——不需要專案檔案。

表達式和語句

如果你有照著 Get Start 教學做,你已經寫好表達式和語句了。 你打的每一行程式碼都是其中一種(或兩者都有)。 現在讓我們來定義這些術語。

表達式與陳述式是 C# 程式的基本建構組件。 一個 表達式 產生一個值。 陳述句執行動作,通常以分號結尾。

以下是表達式:

  • 42 (字面值)
  • x + y (算術運算)
  • Math.Max(a, b) (產生值的方法呼叫)
  • condition ? trueValue : falseValue (條件表示式)
  • new Person("John") (物件建立)

陳述句執行一個動作。 語句控制程式流程、宣告變數或呼叫操作。 以下是陳述:

  • int x; (宣告聲明)
  • int x = 42; (帶初始化的宣告語句)
  • Console.WriteLine("Hello"); (方法呼叫語句)
  • if (condition) { /* code */ } (條件語句)
  • return result; (return 語句)

語句通常包含表達式,且表達式可以嵌套在其他表達式中。 例如,以下宣告語句將 f 指派給加法表達式的結果。 該加法表達式會將兩個方法呼叫表達式的結果相加:

var maxResult = Math.Max(a, b) + Math.Max(c, d);

如需查看有關敘述的詳細資訊,請參閱敘述。 關於表達體構件的資訊,請參見表達體構件。