iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0

頂層語句

「頂層語句(Top-level statements)」是 C# 9(.NET 5 時期)新增的語言功能,允許在程式檔案中直接撰寫語句,而不必顯式定義 Program 類別或 Main 方法。

我找 GitHub dotnet/roslyn 專案,主要由知名的 Mads Torgersen 發起的 issue ,主要來龍去脈,早期的 C# 腳本方言在 Roslyn 問世後,C# 有所謂 scripting/interactive 模式(例如 .csx、Try.NET、Jupyter notebooks)。在這種模式裡可以直接寫陳述式與函式,不必加上 class Program { static void Main(...) { ... } }

設計概念是將以下

Console.WriteLine("Hello");

編譯結果

partial class Program
{
    static void <GeneratedMain>(string[] args)
    {
        Console.WriteLine("Hello");
    }
}

但這造成「標準 C#」與「腳本 C#」語言體驗有落差:開發者可以在互動環境能直接寫程式,但轉向正式專案時卻需要接受額外的樣板,造成像是我需要用 LINQPad 工具,去解決輕量化的測試需求。

所以 2019年 Mads Torgersen 在 csharplang 倉庫提出 #2765,討論將頂層語句納入正式語言。反覆調整後,納入 C# 9.0 對應 .NET 5 / Visual Studio 16.8,影響之後 Minimal APIs 功能可以使用此特性優化開發體驗。

只需要這樣寫即可創建一個 web api

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello");
app.Run();

頂層語句方便,但是會有以下限制

  • 只有一個檔案可以包含頂層語句(否則編譯錯誤)
  • 如果想要用 Program 擴展可以自己在另外一個擋案使用 paritial

上一篇
「單 cs run 模式」底層原理跟開源程式碼由來
下一篇
.NET 10 SDK 與 CLI 原始碼閱讀
系列文
新 .NET & Azure & IoT & AI 開源技術實戰手冊 (含深入官方程式碼講解) 26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言