Объясните как происходит вызов метода
От: Minimaxus Россия  
Дата: 24.06.10 07:14
Оценка:
Привет!
Ниже представлен код. Ответьте на следующие вопросы:
1) Как вызвать функцию TestDerived.Print не указывая явно, что класс имплементирует интерфейс ITest?
2) Как вообще происходит вызов функции Print в 2-х случаях когда TestDerived: Test, ITest и когда TestDerived: Test?
При вызове CallPrint происходит преобразование к ITest, потом поиск функции идет в по какой таблице и у какого типа?
Видимо, если будет описано 2-е, то 1-е я сам пойму

    interface ITest
    {
        void Print();
    }

    class Test : ITest
    {
        public void Print()
        {
            Console.WriteLine("Test class");
        }
    }

    class TestDerived : Test // , ITest
    {
        public new void Print()
        {
            Console.WriteLine("TestDerived class");
        }
    }
....

public static void CallPrint(ITest iTest)
        {
            iTest.Print();
        }

        static void Main(string[] args)
        {
            TestDerived test = new TestDerived();
            CallPrint(test); // Test class
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.