C# 中的类型转换是否发生在这里?

发布于 2024-12-23 02:18:07 字数 501 浏览 1 评论 0原文

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

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

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

I have a basic question regarding type casting.

class A { }
class B : A { }

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

In the above code whether type casting will occur?

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

In the above code whether type casting will occur?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-12-30 02:18:07

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

You are using explicit cast like (A)b in both cases. So type cast will happen in both cases. If explicit casting is removed, then in first case implicit cast will occur and second case will not have any casting as it is same as b.process().

半窗疏影 2024-12-30 02:18:07

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

I recommend to you create a class converter to cast class A to class B.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文