oop检查返回类型是父类还是子类

时间:2019-04-18 13:52:23

标签: c# oop inheritance

假设我有这个课程:

public class Parent
{
    public string Name {get; set;}
}

以及从父类继承的此类:

public class Child : Parent
{
    public string Toys {get; set;}
}

在某个随机类中,我有一个返回Parent的函数:

public class SomeClass
{
    public Parent GetPerson()
    {
      if (whatever)
      {
        return new Parent { Name = 'Parent' };
      }
      else
      {
        return new Child {Name = 'Child', Toys = 'Paper Plane, Spider Man'};
      }
    }
}

当我称为GetPerson时,我想知道它是父母还是孩子。 我以为这可能有效,但是这种情况总是错误的

var person = GetPerson();

if (person is Child childPerson) // This is always false :(
{
   var toys = childPerson.Toys;
}

2 个答案:

答案 0 :(得分:3)

我复制并粘贴了“ if”语句,当人实际上是“ Child”类型时,它确实返回true。输入if条件时,请确保该人的类型确实是child类型。这将假定GetPerson();总是返回父母。

答案 1 :(得分:0)

您尝试了 GetType() typeof()吗?

示例:

if (person.GetType() == typeof(Child))
{
   ...
}

致谢