| File: System\Collections\Immutable\ImmutableDictionary_2.MutationResult.cs | Web Access |
| Project: src\runtime\src\libraries\System.Collections.Immutable\src\System.Collections.Immutable.csproj (System.Collections.Immutable) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Collections.Immutable { /// <content> /// Contains the inner <see cref="ImmutableDictionary{TKey, TValue}.MutationResult"/> class. /// </content> public partial class ImmutableDictionary<TKey, TValue> { /// <summary> /// Describes the result of a mutation on the immutable data structure. /// </summary> private readonly struct MutationResult { /// <summary> /// The root node of the data structure after the mutation. /// </summary> private readonly SortedInt32KeyNode<HashBucket> _root; /// <summary> /// The number of elements added or removed from the collection as a result of the operation (a negative number represents removed elements). /// </summary> private readonly int _countAdjustment; /// <summary> /// Initializes a new instance of the <see cref="ImmutableDictionary{TKey, TValue}.MutationResult"/> struct. /// </summary> /// <param name="unchangedInput">The unchanged input.</param> internal MutationResult(MutationInput unchangedInput) { _root = unchangedInput.Root; _countAdjustment = 0; } /// <summary> /// Initializes a new instance of the <see cref="ImmutableDictionary{TKey, TValue}.MutationResult"/> struct. /// </summary> /// <param name="root">The root.</param> /// <param name="countAdjustment">The count adjustment.</param> internal MutationResult(SortedInt32KeyNode<HashBucket> root, int countAdjustment) { Requires.NotNull(root, nameof(root)); _root = root; _countAdjustment = countAdjustment; } /// <summary> /// Gets the root node of the data structure after the mutation. /// </summary> internal SortedInt32KeyNode<HashBucket> Root { get { return _root; } } /// <summary> /// Gets the number of elements added or removed from the collection as a result of the operation (a negative number represents removed elements). /// </summary> internal int CountAdjustment { get { return _countAdjustment; } } /// <summary> /// Returns an immutable dictionary that captures the result of this mutation. /// </summary> /// <param name="priorMap">The prior version of the map. Used to capture the equality comparer and previous count, when applicable.</param> /// <returns>The new collection.</returns> internal ImmutableDictionary<TKey, TValue> Finalize(ImmutableDictionary<TKey, TValue> priorMap) { Requires.NotNull(priorMap, nameof(priorMap)); return priorMap.Wrap(this.Root, priorMap._count + this.CountAdjustment); } } } }