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 のレビューも受けられます。
すべてのチャレンジ