Я недавно начал изучать C# и столкнулся с проблемой. Я не очень хорошо разбираюсь в абстрактных/интерфейсных классах, но понимаю основные принципы и приложения.Передача абстрактного класса в качестве аргумента в методе
Я сейчас смотрю ООП для C#. Я уже знаю механику ООП, выполнив ее на Java, но так и не использовал абстрактные или интерфейсные классы.
Цель моего кода - передать в 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...
Вы знаете тип во время компиляции? –