在 LINQ / C# 環境下,若希望 List<int> 只允許插入、禁止刪除,核心原則是 **封裝**:**不對外暴露 List 實例**,僅提供 Add 方法。
public class ReadOnlyList {
private readonly List<int> _inner = new List<int>();
public void Add(int value) => _inner.Add(value);
// 僅暴露唯讀檢視
public IEnumerable<int> AsEnumerable() => _inner.AsReadOnly(); // 或 _inner.ToArray()
public int Count => _inner.Count;
public int this[int index] => _inner[index]; // 可選:唯讀索引器
}
_inner 不對外公開,外部無法呼叫 Remove、Clear 等方法。Add、Count、索引器、IEnumerable<T> 等唯讀介面。_inner.AsReadOnly()(回傳 ReadOnlyCollection<T>)或 ToArray(),確保呼叫端無法修改原集合。這是「最小權限原則」在集合封裝上的直接應用:不給刪除的機會,就不需要防禦刪除。