Array.Clone Method
using System; using System.Collections.Generic; public class Starter { public static void Main() { CommissionedEmployee[] salespeople = {new CommissionedEmployee("Bob"), new CommissionedEmployee("Ted"), new CommissionedEmployee("Sally")}; Employee[] employees = (Employee[])salespeople.Clone(); foreach (Employee person in employees) { person.Pay(); } } } public class Employee { public Employee(string name) { m_Name = name; } public virtual void Pay() { Console.WriteLine("Paying {0}", m_Name); } private string m_Name; } public class CommissionedEmployee : Employee { public CommissionedEmployee(string name) : base(name) { } public override void Pay() { base.Pay(); Console.WriteLine("Paying commissions"); } }