SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

【C#で知っておくべき新機能】最新バージョンを徹底解説!

C#の新たなる進化──プライマリコンストラクタとコレクション式などバージョン12の注目機能を紹介!

【C#で知っておくべき新機能】最新バージョンを徹底解説! 第4回


ラムダ式の進化:C# 12でのパラメータ既定値の導入

 C# 12では、ラムダ式のパラメータ(Default lambda parameters)に既定値を定義できるようになりました。

 ラムダ式とは匿名関数(無名関数)のことで、デリゲート型(関数を参照できる型)の初期化など関数を受け取ることのできる局面で、定義済みの関数の代わりに関数を直接記述する記法をいいます。ラムダ式は、以下のようにラムダ宣言演算子(=>)を使って記述します。

(パラメータ) => 式		式形式
(パラメータ) => { 文... }	ステートメント形式

 従来は、このラムダ式のパラメータには既定値が指定できず、そのため省略もできないという制約がありました。通常の関数では、オプション引数(仮引数に指定される既定値)による既定値の指定が可能でしたが、これがラムダ式でも可能になりました。これにより、ラムダ式においても値の省略による呼び出しの簡略化や、パラメータの増加によるコードの修正が不要になるなどのメリットがあります。

 ラムダ式におけるオプション引数も、通常の関数と同様に以下のリストのように指定できます。

default_lambda/Program.cs
var func1 = (int a = 0) => a;	// 引数aの既定値は0

Console.WriteLine(func1());	// 省略時。実行結果:0
Console.WriteLine(func1(3));	// 引数を指定。実行結果:3

 さらに、ラムダ式においてもparamsパラメータ(可変長の引数)が利用できるようになりました。これにより、関数に渡すためだけの一時的な配列を作る必要がなくなり、コードがより簡潔かつ効率的になります。

default_lambda/Program.cs
var func2 = (params int[] a) => a.Sum();
Console.WriteLine(func2(1, 2, 3, 4, 5));	// 実行結果:15

まとめ

 今回は、クラスでも利用可能になったプライマリコンストラクタ、より簡潔な記述が可能になったコレクション式、左辺値参照のみを読み出し専用にするref readonly修飾子、パラメータのデフォルト値が設定可能になったラムダ式を紹介しました。

 次回は、型エイリアス、インライン配列、Experimental属性、インターセプタを紹介します。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
【C#で知っておくべき新機能】最新バージョンを徹底解説!連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

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

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/19041 2024/03/06 19:16

イベント

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

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

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

メールバックナンバー