こんにちは!C#愛好家です。
執筆中の2025年6月時点での最新の正式リリースバージョンはC#13ですが、今冬に.NET10と共にリリースされる予定の「C#14」についてご存じでしょうか?
C#14では
な、な、ナ、ナント、
拡張メンバー(拡張プロパティ)
が実装されます!(パチパチパチ)
C#erの皆さんなら誰しも待ち望んでいた機能が簡単に実装できます!
今回はその概要をお伝えします!
事前準備
C#14は2025年6月時点ではまだプレビュー段階です。
プレビュー機能を利用するには準備が必要なので解説します。
.NET10 SDK
C#14を使うには.NET10のSDKが必要になります。
下記からお使いの環境にあったものをダウンロードし、インストールを行ってください。
dotnet.microsoft.com
開発環境
Visual Studio 2022 Previewをダウンロードし、インストールします。
こちらをインストールすると、正式リリース前のプレビュー機能が利用可能になります!
visualstudio.microsoft.com
プロジェクト作成
Visual Studio 2022 Previewを起動したら、プロジェクトを作成します。
今回は「コンソール アプリ」を選択します。
フレームワークで「.NET 10.0(プレビュー)」を選ぶことを忘れないでください。
作成を終えたらプロジェクトを選択し、.csprojファイルに以下の一行を追加します。
<LangVersion>Preview</LangVersion>
この一行を入れることで、プレビュー段階の機能が使えるようになります!
実装方法
準備が整いましたので、実際に実装してみましょう。
とその前に、以前までの実装方法も軽くおさらいしておきましょう!
以前までの実装
そもそもC#13までは、拡張できるのは「メソッド」のみでした。
なのでプロパティを拡張しようとしたら、拡張メソッドとしてプロパティ風に実装する、もしくはラッパークラスを作るしかできませんでした。
//メソッドを使ってプロパティ風に実装 public static class PersonExtensions { public static string GetFullName(this Person person) => $"{person.FirstName} {person.LastName}"; } //ラッパークラスを作ってプロパティを実装 public class PersonWrapper { private readonly Person _person; public PersonWrapper(Person person) => _person = person; public string FullName => $"{_person.FirstName} {_person.LastName}"; }
これでもまぁいいですが、プロパティではないですし・・・多少コストが掛かっちゃいますよね?
C#14での実装
お待たせしました!待望のC#14の実装です!
public static class PersonExtensions { extension(Person person) { // プロパティ public string FullName => $"{person.FirstName} {person.LastName}"; // メソッドも普通に書けるよ public string GetInitials() => $"{person.FirstName[0]}.{person.LastName[0]}."; } }
非常にシンプルです・・・(感涙)
extension
という新しいキーワードが追加されています。
こちらを使うとプロパティもメソッドも一緒くたに追加できます。
他の有用な例もお見せします!
public static class SomeExtensions { extension<T>(IEnumerable<T> source) { // IEnumerableでもインデクサが使えるようになる // IListかどうか気にしないで source[0] のような使い方ができる! public T this[int index] => source.Skip(index).First(); } extension(int) { // int.Zero のように使える何でもアリな例 public static int Zero => 0; } }
これらの例もリリース後は動くようですが、2025年6月時点ではエラーがあるようで上手く動きません・・・
これからの開発に期待しましょう!
MicrosoftのC#14のページも随時更新されていますので必読ですよ! learn.microsoft.com
まとめ
非常にリリースが待ち遠しいですね。
拡張メンバーに限らず、最新のプレビュー機能を試してみると良い気付きが得られると思います。
皆さんの声が開発に役立つかもしれません。ご興味がある方はお試しください。
おわりに
KENTEMでは、様々な拠点でエンジニアを大募集しています! 建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。 recruit.kentem.jp career.kentem.jp