簡體   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