Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#-多态性仅打印多态性列表中的一个类对象_C#_Polymorphism - Fatal编程技术网

c#-多态性仅打印多态性列表中的一个类对象

c#-多态性仅打印多态性列表中的一个类对象,c#,polymorphism,C#,Polymorphism,如何仅打印多态列表中的一个类? 例如,program.cs中有一个多态性列表 List<Person> personList = new List<Person>(); static void DisplayVisitor(List<Person> pList) { foreach (Person p in pList) { if (p.Equals(Visito

如何仅打印多态列表中的一个类? 例如,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);
            }
        }
List personList=new List();
静态void DisplayVisitor(列表pList)
{
foreach(pList中的p人)
{
如果(p.Equals(访客))
控制台写入线(p);
}
}
我在Person类中有Resident和Visitor类。我已经创建了几个居民和访客,但如何仅显示我的人员列表中的访客。 如何检查列表中的访问者对象?

使用运算符检查对象类型

if (p is Visitor v) // with type pattern
  Console.WriteLine(v);
请注意,您可以使用类型为的Linq方法过滤列表,以仅获取特定类型的项:

foreach(var v in pList.OfType<Visitor>())
   Console.WriteLine(v);
foreach(pList.OfType()中的变量v)
控制台写入线(v);
您可以使用操作员检查p是否为
访客类型

is运算符检查表达式结果的运行时类型是否为 与给定类型兼容


除了其他答案外,你还可以使用下面的答案

    static void DisplayVisitor(List<Person> pList)
    {
        foreach (Person p in pList)
        {
            if (p is Visitor)
                Console.WriteLine(p);
        }
    }
static void DisplayVisitor(列表pList)
{
foreach(pList中的p人)
{
if(p为访客)
控制台写入线(p);
}
}
    static void DisplayVisitor(List<Person> pList)
    {
        foreach (Person p in pList)
        {
            if (p is Visitor)
                Console.WriteLine(p);
        }
    }