Skip to content

12. 読み取り専用のコレクションを渡す

リストなどのコレクションを外部に渡すとき、そのまま渡すのは危険です。コレクションは参照型なので、渡した外部で要素の追加や削除ができてしまいます。各コレクションは読み取り専用のインターフェースを実装しているため、それにキャストして渡すと安全です。

csharp
// ❌ Bad: Listをそのまま返す
public class Inventory
{
    List<Item> items = new();

    public List<Item> GetItems()
    {
        return items; // 外部で自由にAdd/Removeできてしまう!
    }
}

// ✅ Good: 読み取り専用インターフェースで返す
public class Inventory
{
    List<Item> items = new();

    public IReadOnlyList<Item> GetItems()
    {
        return items; // IReadOnlyListなのでAdd/Removeできない
    }
}

Unity設計講習会 資料公開ページ