-4

我有一个关于类型转换的基本问题。

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();

在上面的代码中是否会发生类型转换?

4

2 回答 2

1

在这两种情况下,您都在使用像 (A)b 这样的显式转换。所以在这两种情况下都会发生类型转换。如果显式转换被移除,那么在第一种情况下会发生隐式转换,第二种情况不会有任何转换,因为它与 b.process() 相同。

于 2011-12-28T11:55:41.463 回答
0

我建议您创建一个类转换器,将 A 类转换为 B 类。

于 2011-12-28T11:51:25.067 回答