需求:建立一個最多容納 10 個元素的 List<int>,超過容量拒絕新增。標準 List<T> 無容量上限屬性(Capacity 僅影響內部陣列大小,不限制 Count),需自行封裝。
public class LimitedList {
private readonly List<int> _inner = new List<int>();
private readonly int _maxSize;
public LimitedList(int maxSize = 10) => _maxSize = maxSize;
public void Add(int value) {
if (_inner.Count < _maxSize) _inner.Add(value);
// 可選:超過容量拋出異常或忽略
}
public IEnumerable<int> AsEnumerable() => _inner.AsReadOnly();
public int Count => _inner.Count;
public int this[int index] => _inner[index];
}
var list = new LimitedList(10);
for (int i = 0; i < 15; i++) list.Add(i); // 只保留 0~9
Console.WriteLine(list.Count); // 10
ICollection<T>、IList<T> 介面以相容標準 API(Add 滿時拋 InvalidOperationException)。Insert、RemoveAt 等方法同樣檢查容量/邊界。lock 或使用 ConcurrentQueue 配合 BoundedCapacity(.NET 6+)。自訂集合類別是掌控資料結構行為的最直接方式,避免在業務程式碼中散落邊界檢查邏輯。