using System; using System.Collections; class Album : IComparable, ICloneable { private string _Title; private string _Artist; public Album(string artist, string title) { _Artist = artist; _Title = title; } public string Title { get { return _Title; } set { _Title = value; } } public string Artist { get { return _Artist; } set { _Artist = value; } } public override string ToString() { return _Artist + ",\t" + _Title; } public int CompareTo(object o) { Album other = o as Album; if (other == null) throw new ArgumentException(); if (_Artist != other._Artist) return _Artist.CompareTo(other._Artist); else return _Title.CompareTo(other._Title); } public object Clone() { return new Album(_Artist, _Title); } } public class foo { public foo() { myString = "Test"; } private string myString; } class MainClass { static void Main(string[] args) { ArrayList arr = new ArrayList(); arr.Add(new Album("G", "A")); arr.Add(new Album("B", "G")); arr.Add(new Album("S", "A")); arr.Sort(); arr.Insert(0, new foo()); try { foreach (Album a in arr) { Console.WriteLine(a); } } catch (System.InvalidCastException e) { } } }