As a general comment, warnings during compile time are an obstacle to development in a professional environment. There are four of these warnings in the UnitClassLibrary code.
The code appears to confuse the use of operator== with Equals(). operator== tests whether two object references point to the exact same object on the heap. Whereas Equals() tests whether two objects have the same "value" (by whatever definition you choose for equality.)
Suggest substituting Equals() for operator== in the classes. Suggest eliminating overriding operator!=, and using (! Equals()) wherever operator!= is used.