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();
    }
Example #2
0
        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); // Ошибка компиляции
        }