gpt4 book ai didi

C#:解决继承类与其基类之间的无效转换异常

转载 作者:可可西里 更新时间:2023-11-01 08:51:45 26 4
gpt4 key购买 nike

我有两个类,名为 Post 和 Question。问题定义为:

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

我的 Question 类没有覆盖 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。我做错了什么?

最佳答案

问题是您不能从父对象转换到子对象。您可以为将父类作为参数的子类创建一个构造函数: 问题 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# 不允许您对基类进行隐式转换。

关于C#:解决继承类与其基类之间的无效转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1895552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com