C# 演習

C#でデータをメモリに保存するジェネリックなリポジトリ

このレッスンでは、型の安全性を保ちながら、どんな型のデータでも保存できるジェネリックなリポジトリのクラスを作ります。

はじめに

リポジトリ(repository)は、データの保存と取り出しを担当する中間の層です。リポジトリをジェネリックに書けば、ユーザー、商品、注文といった多くの種類のデータに、型変換なしで1つの実装を共通して使えます。

クラスRepository<T>はデータをprivateなList<T>に保存します。new Repository<string>()と作ると、リポジトリは文字列しか受け付けず、ほかの型のデータを追加しようとするとコンパイラがエラーを出します。プロパティAllはIReadOnlyList<T>を返すので、外からリストを読むことはできても、変更はできません。

実行できる C# の例

C#
コードを実行 →
Program.cs
using System;
using System.Collections.Generic;
class Repository<T>
{
    private readonly List<T> _items = new();
    public void Add(T item) => _items.Add(item);
    public IReadOnlyList<T> All => _items;
}
class Program
{
    static void Main() { var repo = new Repository<string>(); repo.Add("C#"); Console.WriteLine(repo.All[0]); }
}
実行結果
C#

デバッガーで練習する

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

チャレンジで練習する

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

すべてのチャレンジ