fieldキーワードを使った .NET 10 / C# 14 コンソールアプリサンプル

Other

概要

このリポジトリは、.NET 10 と C# 14 を想定した小さなコンソールアプリのサンプルで、特に「field」キーワード(属性ターゲット指定子)を使った実装例を示しています。C# では属性をどのターゲット(型、メソッド、プロパティ、フィールドなど)に適用するかを明示でき、そのうち [field: …] と書くことで、オートプロパティのコンパイラ生成バックイングフィールドやイベントの裏側にあるフィールドに直接属性を付与できます。本リポジトリはその使い方を簡潔にまとめ、学習や検証のために最小限のコードで実行可能な例を提供します。

GitHub

リポジトリの統計情報

  • スター数: 3
  • フォーク数: 0
  • ウォッチャー数: 3
  • コミット数: 3
  • ファイル数: 4
  • メインの言語: C#

主な特徴

  • C# の属性ターゲット指定子 [field: …] の使用例を示すシンプルなサンプル
  • .NET 10 / C# 14 を想定したプロジェクト構成(最小限のコンソールアプリ)
  • 実行して動作確認ができる軽量なコード(学習・検証向け)
  • リポジトリが小規模で改変・拡張が容易

技術的なポイント

このサンプルの技術的な焦点は「属性ターゲット」の明示的指定、特に [field: …] を使ってコンパイラが生成するバックイングフィールドに属性を付与する点にあります。C# では同じ名前の宣言(例えば auto-property)に対して、属性をプロパティ本体に付けるのか、あるいはその裏にあるフィールドに付けるのか明示する必要がある場合があります。例えばシリアライザーやシリアライズ除外属性(JsonIgnore や NonSerialized など)を適用したいとき、プロパティに対して付与すると振る舞いが期待通りにならないケースがあるため、[field: JsonIgnore] のように書くことで「バックイングフィールドそのもの」を対象にできます。

またイベントに関しても同様で、イベント宣言はしばしばフィールドベースで実装されます。イベントのバックフィールドに対して属性を付けたい場合は [field: …] を用いると安全にターゲットを指定できます。これによりリフレクションやシリアライゼーション、シグナル/シリアライズの制御がより正確になります。

サンプルは .NET 10 のプロジェクトファイルや C# のトップレベルステートメント、暗黙的な using(implicit usings)などのモダンな構成を想定しており、実際に dotnet run で動かして挙動を確認できるよう設計されています。コード自体は非常に小さく、属性の適用箇所を変えることで差分を比較しやすく、習得用に最適です。将来的に C# 言語のバージョンや属性関連の仕様が更新されても、基本的な属性ターゲットの概念は有用であり、実践的な知見が得られます。

(上記は概念的な説明であり、実際のコードはリポジトリ内のサンプルを参照してください)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • LICENSE: file
  • README.md: file
  • src: dir

まとめ

小規模で実践的、属性ターゲットの理解に役立つ良い学習用サンプルです(50字程度)。

リポジトリ情報:

READMEの抜粋:

dotnet10-csharp14-consoleapp-fieldkeyword

Exemplo em .NET 10 + C #14 de Console Application que faz uso da palavra-chave field. …