2

O(1) スタック操作と O(log n) リスト操作を提供する不変コレクションを実装しています。その結果、前面に要素を追加する方が、背面に要素を追加するよりも高速です。System.Collections.Immutable.IImmutableList<T>.Add()( https://nuget.org/packages/Microsoft.Bcl.Immutablehttp://blogs.msdn.com/b/bclteam/archive/2012/12/18/preview-of-immutable-の有効な実装はできますか? collections-released-on-nuget.aspx ) コレクションの後ろではなく前に要素を追加しますか?

インターフェイスの定義方法は次のとおりです。

     [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = "Ignored")]
     public interface IImmutableList<T> : IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable
     {
         IEqualityComparer<T> ValueComparer { get; }

         // Summary:
         //     Adds the specified value to this list.
         //
         // Parameters:
         //   value:
         //     The value to add.
         //
         // Returns:
         //     A new list with the element added, or this list if the element is already
         //     in this list.
         IImmutableList<T> Add(T value);
         //
         // Summary:
         //     Adds the specified values to this list.
         //
         // Parameters:
         //   items:
         //     The values to add.
         //
         // Returns:
         //     A new list with the elements added, or this list if the elements are already
         //     in this list.
         IImmutableList<T> AddRange(IEnumerable<T> items);
         IImmutableList<T> Clear();
         bool Contains(T value);
         int IndexOf(T value);
         IImmutableList<T> Insert(int index, T element);

         IImmutableList<T> InsertRange(int index, IEnumerable<T> items);
         IImmutableList<T> Remove(T value);

         IImmutableList<T> RemoveAll(Predicate<T> match);
         IImmutableList<T> RemoveAt(int index);
         IImmutableList<T> RemoveRange(IEnumerable<T> items);

         IImmutableList<T> RemoveRange(int index, int count);

         IImmutableList<T> Replace(T oldValue, T newValue);

         IImmutableList<T> SetItem(int index, T value);

         IImmutableList<T> WithComparer(IEqualityComparer<T> equalityComparer);
}
4

0 に答える 0