S.No.
|
Dictionary
|
Hash Table
|
1
|
A dictionary is a data structure that maps keys to values.
|
A hash table is a data structure that maps keys to values by taking the hash value of the key (by applying some hash function to it) and mapping that to a bucket where one or more values is stored.
|
2
|
Dictionary is not a threadsafe.
|
Hashtable is threadsafe.
|
3
|
Dictionary is types means that the values need not to boxing.
|
Hashtable values need to be boxed or unboxed because it stored the values and keys as objects.
|
4
|
When you try to get the value of key which does not exists in the collection, the dictionary throws an exception of 'KeyNotFoundException'.
|
When you try to get the value of key which does not exists in the collection, the Hashtable returns a NULL value.
|
5
|
When using large collection of key value pairs dictionary is not as good as Hashtable.
|
When using large collection of key value pairs hashtable would be considered more efficient than dictionary.
|
6
|
When we retrieve the record in collection the dictionary maintains the order of entries by which entries were added.
|
When we retrieve the record in collection the hashtable does not maintain the order of entries.
|
7
|
Dictionary relies on chaining.
|
Hashtable relies on rehashing.
|
8
|
Dictionary is Abstract Base class of Hash Table.
|
Hash Table is Derived by Dictionary class.
|
9
|
Dictionary is Generic Type.
|
Hash Table is not generic type.
|
In WPF if we are implementing MVVM pattern then we need to play with Command rather than Events. You can use ICommand interface to create each command class. Implementation of ICommand in a class gives you CanExecute(), Execute() methods which take part in the action performed by Command. Rather than making Command Class for each Command we can implement a generic Relay Command to get Command. Below is a RelayCommand class that we will implement. /// <summary> /// To register commands in MMVM pattern /// </summary> class RelayCommands : ICommand { readonly Action < object > _execute; readonly Predicate < object > _canExecute; ...
Comments
Post a Comment