オブジェクト指向 C#

C#のプロパティとカプセル化

このレッスンでは、チェック付きのプロパティを使って、オブジェクトを不正な値から守ります。

はじめに

カプセル化(encapsulation)とは、データをオブジェクトの中に閉じ込め、管理された方法でしか変更できないようにすることです。C#のプロパティを使うと、値を代入するときのチェックの処理を書ける一方で、使う側は普通の変数と同じ簡単な書き方で済みます。

フィールド_priceはprivateなので、外から直接アクセスできません。プロパティPriceはこのフィールドを通して読み書きし、setの部分は0以上の値だけを受け付け、価格が負ならArgumentOutOfRangeExceptionを投げます。そのためProductが不正な価格を持つことはなく、19.95は普通に表示されます。

実行できる C# の例

C#
コードを実行 →
Program.cs
using System;

class Product
{
    private decimal _price;
    public decimal Price
    {
        get => _price;
        set => _price = value >= 0 ? value : throw new ArgumentOutOfRangeException();
    }
}

class Program
{
    static void Main()
    {
        var product = new Product { Price = 19.95m };
        Console.WriteLine(product.Price);
    }
}
実行結果
19.95

デバッガーで練習する

大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ