public static void Go() { MarioPizzeria mp = new MarioPizzeria(); // This line calls MarioPizzeria’s public GetMenu method mp.GetMenu(); // These lines call MarioPizzeria’s IWindow.GetMenu method IWindow window = mp; window.GetMenu(); // These lines call MarioPizzeria’s IRestaurant.GetMenu method IRestaurant restaurant = mp; restaurant.GetMenu(); }
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); // Ошибка компиляции }