The items are compared in one of two ways. If T implements IComparable<T> /// then the Equals method of that interface will be used to compare items, otherwise the Equals /// method from Object will be used. Alternatively, an instance of IComparer<T> can be passed /// to the constructor to use to compare items.
///Set is implemented as a hash table. Inserting, deleting, and looking up an /// an element all are done in approximately constant time, regardless of the number of items in the Set.
///Typically, this method is not called directly. Instead the "foreach" statement is used /// to enumerate the items, which uses this method implicitly.
///If an item is added to or deleted from the set while it is being enumerated, then /// the enumeration will end with an InvalidOperationException.
///Enumerating all the items in the set takes time O(N), where N is the number /// of items in the set.
///
/// Set<string> set = new Set<string>(StringComparer.CurrentCultureIgnoreCase);
/// set.Add("HELLO");
/// string s;
/// bool b = set.TryGetItem("Hello", out s); // b receives true, s receives "HELLO".
///
///