public VersionedList <T> Add(T item) { return(new VersionedList <T>( Items.Add(item), Version + 1, Changes.Add(ListChange.Added(Version, Items.Count, item)))); }
public VersionedList <T> Insert(int index, T item) { return(new VersionedList <T>( Items.Insert(index, item), Version + 1, Changes.Add(ListChange.Added(Version, index, item)))); }
public VersionedList <T> AddRange(IEnumerable <T> items) { var itemsToAdd = items.ToArray(); var changes = Enumerable.Range(0, itemsToAdd.Length) .Select(i => ListChange.Added(Version + i, Items.Count + i, itemsToAdd[i])); return(new VersionedList <T>( Items.AddRange(items), Version + itemsToAdd.Length, Changes.AddRange(changes) )); }