微軟調整 C# unsafe 語意,強化記憶體安全責任揭露

微軟 .NET 團隊計畫在 C# 16(.NET 11 預覽)引入新的 unsafe 語意模型,讓記憶體安全責任由編譯器協助驗證並明確傳遞給呼叫端,而非僅作為語法開關。

核心概念

  • 舊模型unsafe 僅開啟指標語法的使用範圍
  • 新模型unsafe 明確標示「編譯器無法自行驗證記憶體安全條件」的邊界,並強制要求呼叫端承擔責任

關鍵規則

  1. 每個不安全操作必須明確放在 unsafe 區塊內
  2. 可以「自我封裝」安全性的方法對外仍可普通呼叫
  3. 無法封裝安全性的方法須將責任傳遞給呼叫端(呼叫端也需加 unsafe

技術特性

項目說明
時間點編譯期
效能影響
違規後果編譯錯誤(非警告)
預覽版本.NET 11 / C# 16(選擇性啟用)
正式推出.NET 12

安全說明機制

  • 不安全成員需附 <safety> 文件,明寫呼叫端條件
  • Roslyn 分析器可偵測缺漏說明

產業背景

此變更呼應業界(包含 NSA、CISA 等)對記憶體安全程式語言的關注,試圖在不放棄 C# 高效能能力的前提下,提升記憶體安全的可審計性。

來源文章

相關頁面