Exemple #1
0
        /// <summary> Вызов интерфейсного метода с помощью интерфейсной переменной </summary>
        private static void Example2()
        {
            IMyInterface b = new MyBaseClass();

            b.Method();
            // output: Base class implementation

            IMyInterface d = new MyDerivedClass2();

            d.Method();
            // output: MyDerivedClass2 implementation
        }
Exemple #2
0
        /// <summary> Вызов интерфейсного метода с помощью переменной базового типа и интерфейсоной переменной</summary>
        private static void Example3()
        {
            MyDerivedClass2 d = new MyDerivedClass2();

            MyBaseClass b = d;

            Console.WriteLine(b == d); // True - экземпляры тождественны
            b.Method();
            Console.WriteLine(b.GetType());
            // output: Base class implementation
            //         InterfaceMethodCall.MyDerivedClass2

            ((IMyInterface)b).Method();
            // output: MyDerivedClass2 implementation

            // для вызова интерфейсного метода CLR просматривает таблицу методов объекта-типа
        }