gpt4 book ai didi

c# - 在方法中将抽象类作为参数传递

转载 作者:行者123 更新时间:2023-11-30 17:11:43 26 4
gpt4 key购买 nike

我最近开始学习 C# 并遇到了一个问题。我对抽象/接口(interface)类不是很熟悉,但了解基本原理和应用。

我目前正在研究面向 C# 的 OOP,我已经了解 OOP 的机制,在 Java 中做过,但也从未在那里使用过抽象类或接口(interface)类。

我的代码的目的是传入对象的 ArrayList(共同父类的两个子类)并仅打印出属于该特定类的那些对象。这行得通,但我很好奇如果父类是抽象的,我是否可以获得相同的方法来打印出父类的所有子对象。

父类

abstract class Person
{
protected string Name { get; set; }
protected int Age { get; set; }

public override string ToString() { return "Person:" + Name + ", " + this.Age; }
}

子类

class Student : Person
{
private int studID { get; set; }
private string school { get; set; }
public Student() { }
public Student(string name, int age, int studID, string school)
{
this.Name = name;
this.Age = age;
this.studID = studID;
this.school = school;
}

public override string ToString()
{
string s = "Student:" + Name + ", " + Age + ", " + studID + ", " + school;
return s;
}
}

方法调用

    private static void StudentDetails(object type)
{
ArrayList tmp = new ArrayList();
//display all
//foreach (Person p in people) tmp.Add(p);
foreach (Person p in people)
{
if (type.GetType() == p.GetType())
{
tmp.Add(p);
}
}
//etc...

最佳答案

不要比较 GetType(),因为它不检查继承和其他内容。检查 IsAssignableFrom 方法 -> http://msdn.microsoft.com/de-de/library/system.type.isassignablefrom.aspx ,这就是您要找的。

关于c# - 在方法中将抽象类作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com