首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么上传可以直接在c#中进行,但为了让人失望,我们需要排除掉的铸造?

为什么上传可以直接在c#中进行,但为了让人失望,我们需要排除掉的铸造?
EN

Stack Overflow用户
提问于 2015-06-02 12:42:28
回答 1查看 220关注 0票数 0

考虑两个简单的类

代码语言:javascript
复制
public class Parent
{
    public void ShowData()
    {

    }
}

public class Child : Parent
{
    public void GetData()
    {

    }
}

// Upcasting -- NO ERROR
Parent objParent = new Child();

// Downcasting  -- ERROR
Child objChild = new Parent();

// Downcasting -- NO ERROR
Child objNewChild = (Child)new Parent();
  1. 为什么UpCasting不需要explicit casting
  2. 为什么DownCasting需要explicit casting
EN

回答 1

Stack Overflow用户

发布于 2015-06-02 12:47:02

因为ChildParent,但是Parent不一定是Child。因此,只有当实际实例是ParentChild的子类时,才能将Child转换为Child。不能保证Parent的某些实例或Parent的子类是Child。在这种情况下,您已经展示了new Parent()构造了超类的一个实例。它将编译,但您将得到一个运行时异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30596441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档