我正在与几个具有相同父类的子类一起工作。我想给一个可以是其中一个子类的函数提供一个对象,然后创建一个子类类型,然后直接寻找相应的子类属性。验证所需的继承后,是否可以解决子类属性?
class human
{
public string name;
}
class woman : human
{
public bool isPregnant;
}
class man : human
{
public int numberOfComputers;
}
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
man Andrew = new man();
}
public void checkHuman<T>(T my_human) where T : human
{
// is something like this possible??
if (typeof(my_human).Name == "woman")
Console.WriteLine(my_human.name & " is " & (my_human.isPregnant ? "pregnant." : "not pregnant."));
if (typeof(my_human).Name == "man") {
man m = (man)my_human;
Console.WriteLine(m.name & " has " & m.numberOfComputers & " computers.");
}
}
}
粉饰Java风格的命名约定......在一般情况下,如果你发现自己有根据实际类型的通用变量来编写自定义的逻辑,还有你使用一个很好的机会泛型错了。但是回到你的问题,是的,'typeof(T).Name'可以得到你传入的实际类型。'typeof'是一个只保留类型而不是变量的关键字。所以你不能在'my_human'上运行它。相当于'my_human.GetType()。Name' – PoweredByOrange
您还应该查看'is'和'as'运算符。 –