C#:解决继承的类及其基础之间的无效的Cast异常

前端之家收集整理的这篇文章主要介绍了C#:解决继承的类及其基础之间的无效的Cast异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个班,名为Post and Question.问题定义为:
public class Question : Post
{
//...
}

我的问题类不覆盖任何Post的成员,它只是表达其他一些.

我想完成什么

我有一个类型为Post的对象,其成员已填充.现在,我想把它转换成一个问题,以便我可以为其他几个成员添加值.

这是我当前的代码,使用一个显式的转换:

Post postToQuestion = new Post();

//Populate the Post...

Question ques = (Question)postToQuestion; //--> this is the error!

//Fill the other parts of the Question.

问题

我得到一个InvalidCastException.我究竟做错了什么?

解决方法

问题是你不能从父母到孩子.您可以为使用父类作为参数的子类创建一个构造函数
Question ques = new Question(myPost);

您也可以使用隐式运算符来简化操作:
问题ques = myPost;

http://www.codeproject.com/KB/cs/Csharp_implicit_operator.aspx

编辑:
其实我刚刚尝试用一个演示给你做一个隐含的运算符:

class Question : Post
{
    public Question()
    {
        //...
    }

    public Question(Post p)
    {
        // copy stuff to 'this'
    }

    public static implicit operator Question(Post p)
    {
        Question q = new Question(p);
        return q;
    }
}

但是很明显,C#不允许您使用基类进行隐式转换.

原文链接:https://www.f2er.com/csharp/93083.html

猜你在找的C#相关文章