Здесь происходит приведение типов в C #? - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть основной вопрос, касающийся приведения типов.

class A { }
class B : A { }

B b = new B();
A a = (A)b;

В приведенном выше коде произойдет ли приведение типов?

    interface IA
    {
        void process();
    }

    class B : IA
    {
        #region IA Members

        void IA.process()
        {
            throw new NotImplementedException();
        }

        #endregion
        public void process() { }
    }

    B b = new B();
    b.process();
    ((IA)b).process();

В приведенном выше коде произойдет ли приведение типа?

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Вы используете явное приведение типа (A) b в обоих случаях. Таким образом, приведение типа произойдет в обоих случаях. Если явное приведение удалено, то в первом случае произойдет неявное приведение, а во втором случае приведение не будет выполнено, поскольку оно аналогично b.process ().

0 голосов
/ 28 декабря 2011

Рекомендую вам создать конвертер классов для приведения класса А в класс B.

...