using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Text; namespace Island.StandardLib.Storage { /// /// 表示一个每项长度固定的可序列化变长数组(固定项长可变数组) /// /// 定长项的类型 [Serializable] public class StorableFixedArray : IStorable, IEnumerable where T : IStorable, new() { List array; /// /// 初始化固定项长可变数组 /// public StorableFixedArray() { array = new List(); } public void ReadFromData(DataStorage data) { data.Read(out int size); for (int i = 0; i < size; i++) array.Add(data.Read()); } public void WriteToData(DataStorage data) { data.Write(array.Count); for (int i = 0; i < array.Count; i++) data.Write(array[i]); } public void Add(T item) { array.Add(item); } public void AddRange(IEnumerable item) { array.AddRange(item); } public void Remove(T item) { array.Remove(item); } public void RemoveAt(int index) { array.RemoveAt(index); } public void Clear() { array.Clear(); } public IEnumerator GetEnumerator() { List tl = new List(); for (int i = 0; i < array.Count; i++) tl.Add(array[i]); return tl.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { List tl = new List(); for (int i = 0; i < array.Count; i++) tl.Add(array[i]); return tl.GetEnumerator(); } public int Count { get { return array.Count; } } public int Size { get { return array.Count; } } public int Length { get { return array.Count; } } public T this[int index] { get { return array[index]; } } } }