繁体   English   中英

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

[英]oop Check if return type is parent or child class

假设我有这个课程:

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

和这个继承自Parent的类:

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;
}

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

你尝试过GetType()typeof()吗?

例:

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

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM