C# if文省略形からはじまったこのシリーズ、今度こそ最終回となりました。
今回は、書く手間を極限まで減らせる構文、record
と 式メンバー(expression-bodied members)
をご紹介します。
これまでの if 文やラムダ式とはまた違った、「書かないことが正義」な省略形たちです。
このあたりまで来るともはやKuroMikanも自ら勉強しながら執筆しております💦
record:クラス定義を1行にまとめたいときに
普通に書くとこう
public class Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
このコードは「Personというクラスを定義し、名前と年齢をコンストラクタで受け取れる」という処理を行います。
プロパティ、コンストラクタ、初期化処理…きちんと書いています。
親の顔ほど見たクラス設計ですが、これを省略することができます。
✂️ 省略するとこう
public record Person(string Name, int Age);
わずか1行──。
このコードは、同じ「Person」クラスをたった1行で定義します。プロパティやコンストラクタ、ToString などが自動生成されます。
record
にすると、プロパティ・コンストラクタ・Equals
/GetHashCode
/ToString
など一式が自動生成されます。
不変(イミュータブル)な値オブジェクトに最適です。
✅ 使用例
var p = new Person("Alice", 30);
Console.WriteLine(p); // 出力: Person { Name = Alice, Age = 30 }
recordを使ったインスタンスを作って、その内容を文字列として出力します。ToString()
の出力すらもう賢い。
式メンバー:メソッドやプロパティも1行で
普通に書くとこう
public int Square(int x)
{
return x * x;
}
このコードは、整数を受け取って2乗を返すメソッドです。
これも親の顔ほど(略)この関数も省略できます。
✂️ 省略するとこう
public int Square(int x) => x * x;
同じ処理を式1つで書いたメソッドです。return と波カッコが不要になります。
前回のラムダ式編でも登場した =>
ですが、式が1つだけのときは { return ... }
を =>
で書けます。
✅ プロパティも省略できる
public int AgeInMonths => Age * 12;
このコードは、Age プロパティを12倍した月齢を返す読み取り専用プロパティです。get
も {}
も不要。単純な「計算だけ」のプロパティにぴったり。
式コンストラクタ・式デストラクタ
public Person(string name) => Name = name;
~Person() => Console.WriteLine("Bye!");
このコードは、コンストラクタとデストラクタを1行で記述しています。処理がシンプルなときに便利です。
省略はメソッドだけにとどまりません。
「書く」より「言いたいことだけ伝える」という姿勢が大事です。
まとめ:コードは短く、意図は明確に
処理内容 | 普通の書き方 | 省略形(モダンな書き方) |
---|---|---|
不変オブジェクト定義 | プロパティ+コンストラクタ | record キーワードで1行 |
単一式のメソッド | { return ...; } | => 式メンバーで1行 |
計算プロパティ | get { return ...; } | => 式プロパティで簡潔に |
このように、C# では「書かなくていい部分を減らし、書いた部分が何を意味するかがすぐに伝わる」ように進化してきました。
省略形とは、単なる手抜きではなく、意図を明快にするための工夫です。
これにて「if文省略形シリーズ」は完結です。
C#という言語は、「明示的に書ける自由」もあれば、「省略しても伝わる表現力」も持ち合わせています。
このシリーズでは、コードの「短さ」だけでなく、「読みやすさ」や「意図の明確さ」にフォーカスして、省略形の利点と使いどころを見てきました。
書く量を減らすことは、単なる時短ではありません。
読み手(コードレビュアー等)の負担を減らし、コードの意図を素早く伝え、保守や拡張をしやすくする――それこそが、C#が提供する省略構文の本当の価値です。
今後も複雑なロジックを整理し、シンプルに伝える力を磨きながら、よりスマートなコードを目指していけたらと思います。
小さな1行の省略が、チーム全体の理解と品質に繋がることもありますからね。
ここまでお付き合いいただき、本当にありがとうございました。
このシリーズがあなたのC#ライフを少しでも快適に、そしてちょっと楽しくできたなら幸いです。