Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Check InvalidCastException when using foreach loop with ArrayList

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) {         }     } }