C#におけるラムダ式を使ったプロパティ

C#では、プロパティを簡潔に記述するためにラムダ式を使うことができます。この技術資料では、ラムダ式を使う前後の比較を通じて、その違いと利点を解説します。


プロパティとは?

プロパティは、クラスのデータを外部から安全に操作するための仕組みです。直接フィールドにアクセスさせず、**アクセサ(getter, setter)**を通じて値の取得や設定を行います。

例えば、以下のようにプロパティを定義します。

public class Person
{
    public string Name { get; set; } // プロパティ
}

ここでは「Name」というプロパティで、名前を保存したり取り出したりできます。


ラムダ式を使う前後の比較

例1: フルネームを作るプロパティ

ラムダを使う前

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    // フルネームを取得するプロパティ(従来の方法)
    public string FullName
    {
        get { return $"{FirstName} {LastName}"; }
    }
}

// 使用例
var person = new Person { FirstName = "太郎", LastName = "山田" };
Console.WriteLine(person.FullName); // 山田 太郎
  • 特徴:
    • プロパティのgetアクセサを明示的に記述します。
    • {}を使ってブロックを作成するため、コードが少し長くなります。

ラムダを使った後

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    // ラムダ式を使ったプロパティ
    public string FullName => $"{FirstName} {LastName}";
}

// 使用例
var person = new Person { FirstName = "太郎", LastName = "山田" };
Console.WriteLine(person.FullName); // 山田 太郎
  • 特徴:
    • =>を使うことで、プロパティのgetを簡潔に記述できます。
    • {}を省略できるため、1行で書けてスッキリします。

例2: 割引後の価格を計算するプロパティ

ラムダを使う前

public class Product
{
    public decimal Price { get; set; }
    public decimal Discount { get; set; }

    // 割引後の価格を計算するプロパティ(従来の方法)
    public decimal FinalPrice
    {
        get { return Price * (1 - Discount); }
    }
}

// 使用例
var product = new Product { Price = 1000, Discount = 0.2m };
Console.WriteLine(product.FinalPrice); // 800
  • 特徴:
    • 計算ロジックをgetブロック内で記述します。
    • シンプルな計算であってもコードが少し冗長になります。

ラムダを使った後

public class Product
{
    public decimal Price { get; set; }
    public decimal Discount { get; set; }

    // ラムダ式を使った割引後の価格プロパティ
    public decimal FinalPrice => Price * (1 - Discount);
}

// 使用例
var product = new Product { Price = 1000, Discount = 0.2m };
Console.WriteLine(product.FinalPrice); // 800
  • 特徴:
    • ラムダ式を使うことで、プロパティが1行で書けて分かりやすい。
    • シンプルな計算ロジックに適しています。

例3: 静的プロパティ

ラムダを使う前

public class MathUtilities
{
    // 静的プロパティ(従来の方法)
    private static readonly double _pi = 3.14159;

    public static double Pi
    {
        get { return _pi; }
    }
}

// 使用例
Console.WriteLine(MathUtilities.Pi); // 3.14159
  • 特徴:
    • 静的フィールドとgetアクセサを組み合わせて値を提供しています。
    • シンプルな値を返すだけなのに、コードがやや複雑。

ラムダを使った後

public class MathUtilities
{
    // 静的プロパティ(ラムダ式使用)
    public static double Pi => 3.14159;
}

// 使用例
Console.WriteLine(MathUtilities.Pi); // 3.14159
  • 特徴:
    • 静的プロパティが1行で簡潔に記述可能。
    • 定数や固定値を提供する場合に非常に便利。

ラムダを使う前後の違いまとめ

項目ラムダを使う前ラムダを使った後
コードの長さgetブロックを明示する必要があり、やや長い=>を使って1行で書ける
読みやすさシンプルな処理でも少し冗長に見える処理が短く、意図がわかりやすい
適用範囲複雑なロジックに向いているシンプルな計算や値の取得に最適
初心者向けの理解プロパティの基本を学ぶのに良い慣れてくるとラムダ式での簡潔な書き方が便利

結論

  • ラムダ式を使うことで、短く簡潔なコードを書くことができます。
  • 初学者には、まず「ラムダを使う前」の書き方を理解してから、「ラムダを使った後」の書き方に挑戦するのがおすすめです!
  • シンプルな計算や値の取得には、ぜひラムダ式を活用してみてください!

C#,プロパティ

Posted by hidepon