using System.Collections.Generic;
public Person(string name, int age)
public virtual void Intro()
Console.WriteLine("Hi, my name is {0} and I am {1} years old", new Object[2]{ this.name, this.age });
public class Student : Person
public Student(string name, int age, int grade)
public override void Intro()
Console.WriteLine("I am in year {0}", this.grade);
public void AddToRegister(List<Person> register)
public class Teacher : Person
public Teacher(string name, int age, string subject)
public override void Intro()
Console.WriteLine("My name is {0}, I am {1} I teach {2}", this.name, this.age, this.subject);
public static void Main()
List<Person> register = new List<Person>();
Person jacob = new Teacher("Jacob", 22, Software Developer);
Student joao = new Student("Joao", 16, 12);
Student maja = new Student("Maja", 16, 12);
joao.AddToRegister(register);
maja.AddToRegister(register);
string output = String.Join(", ", register.Select(p => p.name));
Console.WriteLine(output);