private static void testGenericInterface() { Int32 x = 1, y = 2; IComparable <Int32> c = x; // CompareTo ожидает Object, // но вполне допустимо передать переменную y типа Int32 c.CompareTo(y); // Выполняется упаковка // CompareTo ожидает Int32, // передача "2" (тип String) приводит к ошибке компиляции // с сообщением о невозможности привести тип String к Int32 // c.CompareTo("2"); // Ошибка Number n = new Number(); // Значение n сравнивается со значением 5 типа Int32 IComparable <Int32> cInt32 = n; Int32 result = cInt32.CompareTo(5); // Значение n сравнивается со значением "5" типа String IComparable <String> cString = n; result = cString.CompareTo("5"); MarioPizzeria mp = new MarioPizzeria(); // Эта строка вызывает открытый метод GetMenu класса MarioPizzeria mp.GetMenu(); // Эти строки вызывают метод IWindow.GetMenu IWindow window = mp; window.GetMenu(); // Эти строки вызывают метод IRestaurant.GetMenu IRestaurant restaurant = mp; restaurant.GetMenu(); SomeValueType v = new SomeValueType(0); Object o = new Object(); Int32 n1 = v.CompareTo(v); // Без упаковки // n1 = v.CompareTo(o); // Ошибка компиляции }
public Int32 CompareTo(SomeValueType other) { return(m_x - other.m_x); }