Table of Contents

Class SelfCheckingDictionary<K, V>

Namespace
Nautilus.Utility
Assembly
Nautilus.dll
This dictionary structure automatically checks for duplicate keys as they are being added to the collection. Duplicate entries are logged and removed from the final collection.
public class SelfCheckingDictionary<K, V> : IDictionary<K, V>, ICollection<KeyValuePair<K, V>>, IEnumerable<KeyValuePair<K, V>>, IEnumerable

Type Parameters

K
The Key Type
V
The Value Type
Inheritance
SelfCheckingDictionary<K, V>
Implements
Inherited Members
Extension Methods

Constructors

SelfCheckingDictionary(string, IEqualityComparer<K>, Func<K, string>)

Creates a SelfCheckingDictionary<K, V> with an EqualityComparer and an optional ToString function.
public SelfCheckingDictionary(string collectionName, IEqualityComparer<K> equalityComparer, Func<K, string> toLog = null)

Parameters

collectionName string
equalityComparer IEqualityComparer<K>
toLog Func<K, string>

SelfCheckingDictionary(string, Func<K, string>)

Creates a SelfCheckingDictionary<K, V> with an optional ToString function.
public SelfCheckingDictionary(string collectionName, Func<K, string> toLog = null)

Parameters

collectionName string
toLog Func<K, string>

Properties

Count

Gets the number of unique entries in the SelfCheckingDictionary<K, V>
public int Count { get; }

Property Value

int

IsReadOnly

Defaults to false.
public bool IsReadOnly { get; }

Property Value

bool

this[K]

Gets a key value pair from the collection or sets a key value pair into the collection. When setting, if a key already exists, the previous entry will be discarded.
public V this[K key] { get; set; }

Parameters

key K
The unique key.

Property Value

V
The value corresponding to the key.

Keys

Gets a collection containing the keys in the SelfCheckingDictionary<K, V>
public ICollection<K> Keys { get; }

Property Value

ICollection<K>

Values

Gets a collection containing the values in the SelfCheckingDictionary<K, V>
public ICollection<V> Values { get; }

Property Value

ICollection<V>

Methods

Add(KeyValuePair<K, V>)

Add a new entry the collection. If a duplicate key is found, the new value will be discarded.
public void Add(KeyValuePair<K, V> item)

Parameters

item KeyValuePair<K, V>
The key value pair.

Add(K, V)

Add a new entry the collection. If a duplicate key is found, the new value will be discarded.
public void Add(K key, V value)

Parameters

key K
The unique key.
value V
The value.

Clear()

Removes all items from the ICollection<T>.
public void Clear()

Exceptions

NotSupportedException
The ICollection<T> is read-only.

Contains(KeyValuePair<K, V>)

Determines whether the ICollection<T> contains a specific value.
public bool Contains(KeyValuePair<K, V> item)

Parameters

item KeyValuePair<K, V>
The object to locate in the ICollection<T>.

Returns

bool
true if item is found in the ICollection<T>; otherwise, false.

ContainsKey(K)

Determines whether the IDictionary<TKey, TValue> contains an element with the specified key.
public bool ContainsKey(K key)

Parameters

key K
The key to locate in the IDictionary<TKey, TValue>.

Returns

bool
true if the IDictionary<TKey, TValue> contains an element with the key; otherwise, false.

Exceptions

ArgumentNullException
key is null.

CopyTo(KeyValuePair<K, V>[], int)

Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.
public void CopyTo(KeyValuePair<K, V>[] array, int arrayIndex)

Parameters

array KeyValuePair<K, V>[]
The one-dimensional Array that is the destination of the elements copied from ICollection<T>. The Array must have zero-based indexing.
arrayIndex int
The zero-based index in array at which copying begins.

Exceptions

ArgumentNullException
array is null.
ArgumentOutOfRangeException
arrayIndex is less than 0.
ArgumentException
The number of elements in the source ICollection<T> is greater than the available space from arrayIndex to the end of the destination array.

GetEnumerator()

Returns an enumerator that iterates through the collection.
public IEnumerator<KeyValuePair<K, V>> GetEnumerator()

Returns

IEnumerator<KeyValuePair<K, V>>
An enumerator that can be used to iterate through the collection.

Remove(KeyValuePair<K, V>)

Removes the first occurrence of a specific object from the ICollection<T>.
public bool Remove(KeyValuePair<K, V> item)

Parameters

item KeyValuePair<K, V>
The object to remove from the ICollection<T>.

Returns

bool
true if item was successfully removed from the ICollection<T>; otherwise, false. This method also returns false if item is not found in the original ICollection<T>.

Exceptions

NotSupportedException
The ICollection<T> is read-only.

Remove(K)

Removes the element with the specified key from the IDictionary<TKey, TValue>.
public bool Remove(K key)

Parameters

key K
The key of the element to remove.

Returns

bool
true if the element is successfully removed; otherwise, false. This method also returns false if key was not found in the original IDictionary<TKey, TValue>.

Exceptions

ArgumentNullException
key is null.
NotSupportedException
The IDictionary<TKey, TValue> is read-only.

TryGetValue(K, out V)

Gets the value associated with the specified key.
public bool TryGetValue(K key, out V value)

Parameters

key K
The key whose value to get.
value V
When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. This parameter is passed uninitialized.

Returns

bool
true if the object that implements IDictionary<TKey, TValue> contains an element with the specified key; otherwise, false.

Exceptions

ArgumentNullException
key is null.