米Microsoftは、プログラミング言語C#の将来バージョンである「C# 12」において導入される3つの新機能について、.NET公式ブログの4月11日(現地時間)付の投稿にて紹介している。
C# 12では、以下の3つの新機能が搭載される。
- 非レコードクラスおよび構造体のプライマリコンストラクタ
- 任意の型のエイリアス使用
- ラムダ式パラメータのデフォルト値
「非レコードクラスおよび構造体のプライマリコンストラクタ」としては、C# 9においてレコードの位置構文の一部として導入されたレコードのプライマリコンストラクタを、すべてのクラスと構造体に拡張する。プライマリコンストラクタを使用することで、クラス宣言自体にパラメータを追加することが可能になり、これらの値をクラス本体で使用できるようになる。
「任意の型のエイリアス使用」では、ディレクティブサポートの使用が任意の型に拡大され、ほぼすべての型へのエイリアス設定が可能になった。null許容値型のエイリアスは作成できるが、null許容参照型のエイリアス作成には対応しておらず、タプルは要素の名前と型を含められる。
「ラムダ式パラメータのデフォルト値」としては、パラメータのデフォルト値を指定可能にすることで、ラムダ式を強化している。これまでは、ラムダ式パラメータにデフォルト値を設定するために、ローカル関数またはSystem.Runtime.InteropServices名前空間の扱いにくいDefaultParameterValueを使用する必要があった。ラムダ式のパラメータにデフォルト値を設定できるようになることで、メソッド、コンストラクタ、ラムダ式のデフォルトパラメータによる、一貫したコードが得られる。
- 関連リンク
この記事は参考になりましたか?
- この記事の著者
- 
                    CodeZine編集部(コードジンヘンシュウブ) CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。 ※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です 

 
              
               
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                              
                               
                              
                               
                              
                               
                              
                               
                              
                               
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
															
														 
															
														 
															
														.png) 
     
     
     
     
     
													 
													 
													 
													 
													 
										
									
 
                    