C# C/无法将类型为的对象强制转换为类型
我正在尝试创建一个对象。但程序会抛出一个错误: 无法强制转换类型为的对象 以下是生成我的问题的代码:C# C/无法将类型为的对象强制转换为类型,c#,class,inheritance,polymorphism,C#,Class,Inheritance,Polymorphism,我正在尝试创建一个对象。但程序会抛出一个错误: 无法强制转换类型为的对象 以下是生成我的问题的代码: public class AnimalBase { public AnimalBase() { this.ArriveTime = DateTime.Now; } public DateTime ArriveTime { get; set; } public int ageAnimal { get; set; } public i
public class AnimalBase
{
public AnimalBase()
{
this.ArriveTime = DateTime.Now;
}
public DateTime ArriveTime { get; set; }
public int ageAnimal { get; set; }
public int poidsAnimal { get; set; }
public virtual string typeAnimal
{
get
{
return "AnimalBase";
}
}
public static AnimalBase DoSomething(string value)
{
AnimalBase animalbase = new AnimalBase();
animalbase.ArriveTime = DateTime.Now;
animalbase.ageAnimal = 1;
animalbase.poidsAnimal = 2;
return animalbase;
}
}
public class Reptile: AnimalBase
{
public override string typeAnimal
{
get
{
return "Reptile";
}
}
public Reptile():base()
{
}
}
class Program
{
static void Main(string[] args)
{
//ERROR
Reptile rep = (Reptile)AnimalBase.DoSomething("text");
Console.ReadLine();
}
}
错误:
{无法将类型为“ConsoleApplication1.AnimalBase”的对象强制转换为类型为“ConsoleApplication1.gravelate”。}
我不知道为什么我会有这个问题,在msdn中它说我只需要显式地指定类型
感谢您的帮助您的问题是AnimalBase.DoSomething返回的对象的具体类型是AnimalBase
尝试更改它以创建爬虫类实例:
AnimalBase animalbase = new Reptile();
失败的原因是您的继承层次结构。爬行动物是一种动物,但动物不一定是爬行动物。你在倒退。。。爬行动物是一种动物,但不是所有的动物都是爬行动物。你应该把爬行动物扔给动物。我怎么能做到?我是否应该创建一个将animalBase显式转换为爬行动物的方法?