亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從鑄造類中獲取原始類

從鑄造類中獲取原始類

C#
蠱毒傳說 2022-12-24 14:53:06
例如,我有三個類:Animal,Dog和Cat; whereAnimal是一個抽象類并將其屬性繼承給Dog和Cat。在我的程序中,我有一個用戶可以輸入的任意列表(我在 C# Form 上這樣做)。因此,我將所有輸入(無論它們是類Cat還是Dog)存儲到我的List<Animal>.現在我想從中檢索所述實例化類List<Animal>并檢索其原始類,無論是 aCat還是 a Dog。有沒有辦法做到這一點?
查看完整描述

3 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

在最新的 C# 中你可以這樣做:


Animal animal;

if (animal is Cat cat)

{

   cat.Meow();

}


查看完整回答
反對 回復 2022-12-24
?
米脂

TA貢獻1836條經驗 獲得超3個贊

using System.Collections.Generic;

using System.Linq;


namespace ConsoleApp

{

    class Program

    {

        static void Main(string[] args)

        {

            List<Animal> animals = new List<Animal> { new Cat(), new Cat(), new Dog(), new Cat(), new Dog() };


            var dogs = animals.OfType<Dog>().ToList();

            dogs.ForEach(dog => dog.Bark());


            var cats = animals.OfType<Cat>().ToList();

            cats.ForEach(cat => cat.Meow());


            var actualTypes = animals.Select(animal => animal.GetType()).ToList();

        }


        abstract class Animal { }


        class Dog : Animal { public void Bark() { } }


        class Cat : Animal { public void Meow() { } }

    }

}


查看完整回答
反對 回復 2022-12-24
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

您可以使用GetType獲取類的類型。

List<Animal> lstA = new List<Animal>();

        lstA.Add(new Cat());

        lstA.Add(new Dog());

        foreach(Animal a in lstA)

        {

            Console.WriteLine("Type of {0}", a.GetType());

        }


abstract class Animal

{}

class Cat : Animal

{}

class Dog : Animal

{}


查看完整回答
反對 回復 2022-12-24
  • 3 回答
  • 0 關注
  • 97 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號