我试图创建一个对象。但该程序抛出一个错误: 无法转换类型的对象 这是一个产生我的问题的代码:
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.Reptile“。”}
我不知道为什么我有这个问题,在msdn中它说我只需明确指定类型。
感谢您的帮助
答案 0 :(得分:1)
你的问题是AnimalBase.DoSomething
正在返回一个具体类型为AnimalBase
的对象。
尝试更改它以创建Reptile
实例:
AnimalBase animalbase = new Reptile();
此失败的原因是您的继承层次结构。 Reptile
是-a AnimalBase
,但AnimalBase
不一定是Reptile
。