SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineニュース

C# 16、メモリ安全性を強化する新たなunsafeモデルを導入へ

 Microsoftは5月21日(現地時間)、C#のメモリ安全性を抜本的に強化する新しい安全モデルを発表した。

 今回のアップデートでは、unsafeキーワードの役割が見直され、従来の「安全でない構文のマーカー」から「コール元に義務を課す契約」として機能するようになる。新モデルは.NET 11でプレビュー公開、.NET 12で本格導入予定だ。

 現行仕様ではunsafeは主にポインタ使用部分を囲むために用いられていたが、新モデルでは、コンパイラーがunsafeキーワードの使用を厳格に要求する。unsafeは単なる構文域の指定ではなく、コール元が安全義務を負う契約表現へと転換される。これにより、どこが安全でどこがリスクを持つかがコード上で明確になり、レビュアビリティの向上や監査の効率化が見込まれる。

 unsafeで定義された関数は、コール元が明示的にunsafeブロックで呼び出す必要があり、適切なドキュメント(/// <safety>ブロック)で安全性の契約や義務が明示される。これまで暗黙の慣習だった安全確保が明文化され、ドキュメント/解析ツールが欠落を検知できるようになる。

 また、unsafeの範囲は型レベルではなく個々のメンバー、プロパティ、フィールドに限定。ポインタ型がシグネチャに含まれるだけでは自動的にunsafeにはせず、実際に危険な操作(例えばデリファレンス)が発生する箇所ごとに明示される形となる。新たなsafeキーワードも導入され、extern宣言などで必要に応じて安全性を明示する。

 この新しい安全モデルはプロジェクト単位でオプトイン可能で、移行を助けるツールも用意される予定。既存の大半のプロジェクトでは、unsafe APIを利用していなければ大きな影響はないが、ライブラリ側では新モデルへの対応が進行中だ。

関連リンク

この記事は参考になりましたか?

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/news/detail/24314 2026/05/24 15:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング