9章近年におけるC#の動向
C#言語は常に進化し続けています。以前の章ではC# 1からC# 8までの機能について説明しました。ただし「8章 パターンマッチ」では、一部のパターンマッチの新機能としてC# 9の機能を使用しています。本章ではC# 8からの機能である「レシピ9.9 配列のスライシング」を除いて、C# 9の新機能について説明しています。
本章のテーマは不変性(immutability)、つまり一度作成した後は変更できないような型を対象にしています。不変性はマルチスレッド処理を安全に行う場合や、引数として渡したオブジェクトの内容が変更(mutate)されないことを保証するような場合に重要な役割を果たします。
サンプルシナリオでは郵送先や配送先などの住所を処理します。多くの場面において、住所は何らかの値であって、つまり識別情報を持ちません。住所は顧客や企業といったエンティティに関連づけられたデータ(あるいは値)の集合です。一方で、エンティティにはデータベース上でID列に結びつけられることが多いような識別情報があります。住所を単なる値として取り扱う以上、住所は一度値を設定した後は変更されないものにした方がよいでしょう。
C# 9の新機能で興味深いものの1つとして、モジュール初期化の機能があります。型の初期化をコンストラクタで行う場合や、アプリケーションの初期化をMain
で行う場合がありますが、モジュール初期化ではアセンブリのスコープで初期化を行うコードを作成できます。具体例については後ほど説明します。
C# 9の別のテーマとしてはコードの単純化サポートがあります。アプリケーションの実行に必要なMain
メソッドと、その周囲にある名前空間やクラスの定義を省略できるようになっています。オブジェクトの初期化についても単純化されていて、文脈に応じて型を推測する機能が追加されています。まずはアプリケーションの起動を単純化する機能から説明していきます。 ...
Get C#クックブック ―プロフェッショナル開発者のためのモダンレシピ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.