Menu
Coddy logo textTech

式本体のメンバー

CoddyのC#ジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 14/70。

式形式のメンバーは、単一の式のみを含むメンバーのための簡潔な構文を提供します。中かっこを使ってメソッドやプロパティの本体を完全に記述する代わりに、=> の矢印構文を使用します。

単一の式を返すメソッドでは、本文全体を置き換えることができます。

// 従来のメソッド
public int Add(int a, int b)
{
    return a + b;
}

// 式形式のメソッド
public int Add(int a, int b) => a + b;

この構文は読み取り専用プロパティでも機能します。これについてはすでに簡単に見てきました。

public class Circle
{
    public double Radius { get; set; }
    public double Area => Math.PI * Radius * Radius;
    public double Circumference => 2 * Math.PI * Radius;
}

プロパティの getter と setter に対して、それぞれ個別に式本体を使用することもできます。

private string name;
public string Name
{
    get => name;
    set => name = value.Trim();
}

コンストラクターも、単一のステートメントを含む場合はこの構文を使用できます。

public class Person
{
    public string Name { get; }
    public Person(string name) => Name = name;
}

Expression-bodied メンバーを使用すると、ロジックが単純な場合にコードが読みやすくなります。簡潔な操作にはこれらを使用しますが、複数のステートメントや複雑なロジックが必要な場合は、従来の本体を使用してください。

challenge icon

チャレンジ

簡単

expression-bodied メンバーの力を活用して、クリーンで簡潔なコードを記述する商品価格計算機を作成しましょう。

コードを整理するために、2つのファイルを作成します。

  • Product.cs: Store namespace に Product class を定義します。この class では、さまざまな expression-bodied メンバーを示します。
    • auto-implemented property Name (string) と BasePrice (decimal)
    • 両方のプロパティを設定する expression-bodied constructor
    • base price の10%を calculates expression-bodied read-only property TaxAmount
    • base price に tax amount を加えた値を返す expression-bodied read-only property TotalPrice
    • discount amount(base price に percentage を掛けて100で割った値)を返す expression-bodied method GetDiscount(decimal percentage)
    • total price から discount を引いた値を返す expression-bodied method GetFinalPrice(decimal discountPercentage)
  • Program.cs: main ファイルで、input values を使用して Product を作成し、その価格の内訳を表示します。

3つの inputs を受け取ります。

  • Product name
  • Base price
  • 適用する Discount percentage

価格の details を次の format で出力します。

Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}

たとえば、inputs が Laptop100015 の場合、出力は次のようになります。

Product: Laptop
Base Price: 1000.00
Tax (10%): 100.00
Total Price: 1100.00
Discount (15%): 150.00
Final Price: 950.00

すべての monetary value を小数点以下ちょうど2桁に format します。たとえば value.ToString("F2") または $"{value:F2}" のようにします。これは base price、tax、total、discount、final price のすべてに適用されます。

single expression を含むすべてのメンバーには、=> arrow syntax を使用してください。これにより、コードをクリーンで読みやすく保てます。

自分で試してみよう

using System;
using Store;

class Program
{
    public static void Main(string[] args)
    {
        // 入力を読み取る
        string name = Console.ReadLine();
        decimal basePrice = Convert.ToDecimal(Console.ReadLine());
        decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());

        // 入力値を使用してProductオブジェクトを作成する
        Product product = new Product(name, basePrice);

        // GetDiscountメソッドを使用して割引額を計算する
        decimal discountAmount = product.GetDiscount(discountPercentage);

        // GetFinalPriceメソッドを使用して最終価格を計算する
        decimal finalPrice = product.GetFinalPrice(discountPercentage);

        // 必要な形式で価格の詳細を出力する:
        Console.WriteLine($"Product: {product.Name}");
        Console.WriteLine($"Base Price: {product.BasePrice:F2}");
        Console.WriteLine($"Tax (10%): {product.TaxAmount:F2}");
        Console.WriteLine($"Total Price: {product.TotalPrice:F2}");
        Console.WriteLine($"Discount ({discountPercentage}%): {discountAmount:F2}");
        Console.WriteLine($"Final Price: {finalPrice:F2}");
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: C#オンラインコンパイラ