#c# #polymorphism
#c# #полиморфизм
Вопрос:
Как мне распечатать только 1 класс из моего списка полиморфизмов? Например, у вас есть список полиморфизмов в program.cs
List<Person> personList = new List<Person>();
static void DisplayVisitor(List<Person> pList)
{
foreach (Person p in pList)
{
if (p.Equals(Visitor))
Console.WriteLine(p);
}
}
У меня есть классы резидентов и Посетителей в классе Person. Я уже создаю пару резидентов и посетителей, но как мне отобразить только посетителей из моего личного списка?
Как мне проверить наличие объекта Visitor внутри списка?
Ответ №1:
Вы можете использовать is
operator, чтобы проверить, имеет ли p Visitor
тип или нет.
Оператор is проверяет, совместим ли тип времени выполнения результата выражения с заданным типом.
foreach (Person p in pList)
{
if (p is Visitor visitorObj)
Console.WriteLine(visitorObj); //I believe you have overridden `ToString()` method
}
Ответ №2:
Используйте оператор is
для проверки типа объекта
if (p is Visitor v) // with type pattern
Console.WriteLine(v);
Обратите внимание, что вы можете фильтровать список с помощью метода Linq OfType<T>
, чтобы получать только элементы определенного типа:
foreach(var v in pList.OfType<Visitor>())
Console.WriteLine(v);
Ответ №3:
В дополнение к другим ответам вы можете использовать is следующим образом
static void DisplayVisitor(List<Person> pList)
{
foreach (Person p in pList)
{
if (p is Visitor)
Console.WriteLine(p);
}
}