Объясните как происходит вызов метода
От: 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
        }
Re: Объясните как происходит вызов метода
От: nikov США http://www.linkedin.com/in/nikov
Дата: 24.06.10 07:35
Оценка:
Здравствуйте, Minimaxus, Вы писали:

M>2) Как вообще происходит вызов функции Print в 2-х случаях когда TestDerived: Test, ITest и когда TestDerived: Test?

M>При вызове CallPrint происходит преобразование к ITest, потом поиск функции идет в по какой таблице и у какого типа?

См. C# Language Specification, разделы 13.4.4 Interface mapping, 13.4.5 Interface implementation inheritance, 13.4.6 Interface re-implementation, 13.4.7 Abstract classes and interfaces. Там всё подробно описано, в двух словах трудно пересказать.
Re: Объясните как происходит вызов метода
От: nikov США http://www.linkedin.com/in/nikov
Дата: 26.06.10 18:03
Оценка:
Здравствуйте, Minimaxus, Вы писали:

M>2) Как вообще происходит вызов функции Print в 2-х случаях когда TestDerived: Test, ITest и когда TestDerived: Test?

M>При вызове CallPrint происходит преобразование к ITest, потом поиск функции идет в по какой таблице и у какого типа?

Вот тема
Автор: BokiyIS
Дата: 12.02.09
, в которой есть довольно подробное объяснение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.