Class BiDirectionalDictionary<TFirst, TSecond>
This is a dictionary guaranteed to have only one of each value and key. It may be searched either by TFirst or by TSecond, giving a unique answer because it is 1 to 1.
Inheritance
Implements
Inherited Members
Namespace: ImageVault.Core.Lib.Collections.Specialized
Assembly: ImageVault.Core.dll
Syntax
public class BiDirectionalDictionary<TFirst, TSecond> : IDictionary<TFirst, TSecond>, ICollection<KeyValuePair<TFirst, TSecond>>, IEnumerable<KeyValuePair<TFirst, TSecond>>, IEnumerable
Type Parameters
Name | Description |
---|---|
TFirst | The type of the "key" |
TSecond | The type of the "value" |
Constructors
BiDirectionalDictionary()
Initializes a new instance of the BiDirectionalDictionary class.
Declaration
public BiDirectionalDictionary()
BiDirectionalDictionary(IEnumerable<KeyValuePair<TFirst, TSecond>>)
Initializes a new instance of the BiDirectionalDictionary<TFirst, TSecond> class.
Declaration
public BiDirectionalDictionary(IEnumerable<KeyValuePair<TFirst, TSecond>> dictionary)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TFirst, TSecond>> | dictionary |
Properties
Count
The number of pairs stored in the dictionary
Declaration
public int Count { get; }
Property Value
Type | Description |
---|---|
System.Int32 |
IsReadOnly
Gets the IsReadOnly of the BiDirectionalDictionary
Declaration
public bool IsReadOnly { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Item[TFirst]
Get/Sets the TSecond
item identified by the given arguments of the BiDirectionalDictionary
Declaration
public TSecond this[TFirst key] { get; set; }
Parameters
Type | Name | Description |
---|---|---|
TFirst | key |
Property Value
Type | Description |
---|---|
TSecond |
Exceptions
Type | Condition |
---|---|
System.NotImplementedException |
Keys
Gets the Keys of the BiDirectionalDictionary
Declaration
public ICollection<TFirst> Keys { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.ICollection<TFirst> |
Values
Gets the Values of the BiDirectionalDictionary
Declaration
public ICollection<TSecond> Values { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.ICollection<TSecond> |
Methods
Add(TFirst, TSecond)
Tries to add the pair to the dictionary. Throws an exception if either element is already in the dictionary
Declaration
public void Add(TFirst first, TSecond second)
Parameters
Type | Name | Description |
---|---|---|
TFirst | first | |
TSecond | second |
Exceptions
Type | Condition |
---|---|
System.ArgumentException | If duplicate first or second. |
Add(KeyValuePair<TFirst, TSecond>)
Declaration
public void Add(KeyValuePair<TFirst, TSecond> item)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.KeyValuePair<TFirst, TSecond> | item |
Clear()
Removes all items from the dictionary.
Declaration
public void Clear()
Contains(KeyValuePair<TFirst, TSecond>)
Returns a value indicating whether the specified item is contained in the BiDirectionalDictionary<TFirst, TSecond>.
Declaration
public bool Contains(KeyValuePair<TFirst, TSecond> item)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.KeyValuePair<TFirst, TSecond> | item | The item to locate in the BiDirectionalDictionary<TFirst, TSecond>. |
Returns
Type | Description |
---|---|
System.Boolean | true if the KeyValuePair<TFirst,TSecond> parameter is a member of the BiDirectionalDictionary<TFirst, TSecond>; otherwise, false. |
ContainsFirst(TFirst)
Returns a value indicating whether the specified TFirst
is contained in the BiDirectionalDictionary<TFirst, TSecond>.
Declaration
public bool ContainsFirst(TFirst first)
Parameters
Type | Name | Description |
---|---|---|
TFirst | first | The |
Returns
Type | Description |
---|---|
System.Boolean | true if the TFirst parameter is a member of the BiDirectionalDictionary<TFirst, TSecond>; otherwise, false. |
ContainsKey(TFirst)
Returns a value indicating whether the specified TFirst
is contained in the BiDirectionalDictionary<TFirst, TSecond>.
Declaration
public bool ContainsKey(TFirst key)
Parameters
Type | Name | Description |
---|---|---|
TFirst | key | The |
Returns
Type | Description |
---|---|
System.Boolean | true if the TFirst parameter is a member of the BiDirectionalDictionary<TFirst, TSecond>; otherwise, false. |
ContainsSecond(TSecond)
Returns a value indicating whether the specified TSecond
is contained in the BiDirectionalDictionary<TFirst, TSecond>.
Declaration
public bool ContainsSecond(TSecond second)
Parameters
Type | Name | Description |
---|---|---|
TSecond | second | The |
Returns
Type | Description |
---|---|
System.Boolean | true if the TSecond parameter is a member of the BiDirectionalDictionary<TFirst, TSecond>; otherwise, false. |
CopyTo(KeyValuePair<TFirst, TSecond>[], Int32)
Declaration
public void CopyTo(KeyValuePair<TFirst, TSecond>[] array, int arrayIndex)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.KeyValuePair<TFirst, TSecond>[] | array | |
System.Int32 | arrayIndex |
Exceptions
Type | Condition |
---|---|
System.NotImplementedException |
GetByFirst(TFirst)
Find the TSecond corresponding to the TFirst first Throws an exception if first is not in the dictionary.
Declaration
public TSecond GetByFirst(TFirst first)
Parameters
Type | Name | Description |
---|---|---|
TFirst | first | the key to search for |
Returns
Type | Description |
---|---|
TSecond | the value corresponding to first |
Exceptions
Type | Condition |
---|---|
System.ArgumentException | If first. |
GetBySecond(TSecond)
Find the TFirst corresponing to the Second second. Throws an exception if second is not in the dictionary.
Declaration
public TFirst GetBySecond(TSecond second)
Parameters
Type | Name | Description |
---|---|---|
TSecond | second | the key to search for |
Returns
Type | Description |
---|---|
TFirst | the value corresponding to second |
Exceptions
Type | Condition |
---|---|
System.ArgumentException | If second. |
GetEnumerator()
Declaration
public IEnumerator<KeyValuePair<TFirst, TSecond>> GetEnumerator()
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TFirst, TSecond>> |
Remove(TFirst)
Declaration
public bool Remove(TFirst key)
Parameters
Type | Name | Description |
---|---|---|
TFirst | key |
Returns
Type | Description |
---|---|
System.Boolean |
Remove(KeyValuePair<TFirst, TSecond>)
Declaration
public bool Remove(KeyValuePair<TFirst, TSecond> item)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.KeyValuePair<TFirst, TSecond> | item |
Returns
Type | Description |
---|---|
System.Boolean |
RemoveByFirst(TFirst)
Remove the record containing first. If first is not in the dictionary, throws an Exception.
Declaration
public bool RemoveByFirst(TFirst first)
Parameters
Type | Name | Description |
---|---|---|
TFirst | first | the key of the record to delete |
Returns
Type | Description |
---|---|
System.Boolean |
Exceptions
Type | Condition |
---|---|
System.ArgumentException | If first. |
RemoveBySecond(TSecond)
Remove the record containing second. If second is not in the dictionary, throws an Exception.
Declaration
public bool RemoveBySecond(TSecond second)
Parameters
Type | Name | Description |
---|---|---|
TSecond | second | the key of the record to delete |
Returns
Type | Description |
---|---|
System.Boolean |
Exceptions
Type | Condition |
---|---|
System.ArgumentException | If second. |
TryAdd(TFirst, TSecond)
Tries to add the pair to the dictionary. Returns false if either element is already in the dictionary
Declaration
public bool TryAdd(TFirst first, TSecond second)
Parameters
Type | Name | Description |
---|---|---|
TFirst | first | |
TSecond | second |
Returns
Type | Description |
---|---|
System.Boolean | true if successfully added, false if either element are already in the dictionary |
TryGetByFirst(TFirst, out TSecond)
Find the TSecond corresponding to the TFirst first. Returns false if first is not in the dictionary.
Declaration
public bool TryGetByFirst(TFirst first, out TSecond second)
Parameters
Type | Name | Description |
---|---|---|
TFirst | first | the key to search for |
TSecond | second | the corresponding value |
Returns
Type | Description |
---|---|
System.Boolean | true if first is in the dictionary, false otherwise |
TryGetBySecond(TSecond, out TFirst)
Find the TFirst corresponding to the TSecond second. Returns false if second is not in the dictionary.
Declaration
public bool TryGetBySecond(TSecond second, out TFirst first)
Parameters
Type | Name | Description |
---|---|---|
TSecond | second | the key to search for |
TFirst | first | the corresponding value |
Returns
Type | Description |
---|---|
System.Boolean | true if second is in the dictionary, false otherwise |
TryGetValue(TFirst, out TSecond)
Declaration
public bool TryGetValue(TFirst key, out TSecond value)
Parameters
Type | Name | Description |
---|---|---|
TFirst | key | |
TSecond | value |
Returns
Type | Description |
---|---|
System.Boolean |
TryRemoveByFirst(TFirst)
Remove the record containing first, if there is one.
Declaration
public bool TryRemoveByFirst(TFirst first)
Parameters
Type | Name | Description |
---|---|---|
TFirst | first |
Returns
Type | Description |
---|---|
System.Boolean | If first is not in the dictionary, returns false, otherwise true |
TryRemoveBySecond(TSecond)
Remove the record containing second, if there is one.
Declaration
public bool TryRemoveBySecond(TSecond second)
Parameters
Type | Name | Description |
---|---|---|
TSecond | second |
Returns
Type | Description |
---|---|
System.Boolean | If second is not in the dictionary, returns false, otherwise true |
Explicit Interface Implementations
IEnumerable.GetEnumerator()
Declaration
IEnumerator IEnumerable.GetEnumerator()
Returns
Type | Description |
---|---|
System.Collections.IEnumerator |