// // This file contains the C# code from Program 5.8 of // "Data Structures and Algorithms // with Object-Oriented Design Patterns in C#" // by Bruno R. Preiss. // // Copyright (c) 2001--2002 by Bruno R. Preiss, P.Eng. All rights reserved. // // http://www.brpreiss.com/books/opus6/programs/pgm05_08.txt // public abstract class ComparableObject : IComparable { public static implicit operator ComparableObject(char c) { return new ComparableChar(c); } public static explicit operator char(ComparableObject c) { return (char)((ComparableChar)c); } public static implicit operator ComparableObject(int i) { return new ComparableInt32(i); } public static explicit operator int(ComparableObject c) { return (int)((ComparableInt32)c); } public static implicit operator ComparableObject(double d) { return new ComparableDouble(d); } public static explicit operator double(ComparableObject c) { return (double)((ComparableDouble)c); } public static implicit operator ComparableObject(string s) { return new ComparableString(s); } public static explicit operator string(ComparableObject c) { return (string)((ComparableString)c); } // ... }