/* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110 */ /* Example10_11.cs illustrates the use of an indexer */ using System; public class Example10_11a { public static void Main() { // create a Car object Car myCar = new Car("Toyota", "MR2"); // display myCar[0] and myCar[1] Console.WriteLine("myCar[0] = " + myCar[0]); Console.WriteLine("myCar[1] = " + myCar[1]); // set myCar[0] to "Porsche" and myCar[1] to "Boxster" Console.WriteLine("Setting myCar[0] to "Porsche" " + "and myCar[1] to "Boxster""); myCar[0] = "Porsche"; myCar[1] = "Boxster"; // myCar[2] = "Test"; // causes IndeXOutOfRangeException to be thrown // display myCar[0] and myCar[1] again Console.WriteLine("myCar[0] = " + myCar[0]); Console.WriteLine("myCar[1] = " + myCar[1]); } } // declare the Car class class Car { // declare two fields private string make; private string model; // define a constructor public Car(string make, string model) { this.make = make; this.model = model; } // define the indexer public string this[int index] { get { switch (index) { case 0: return make; case 1: return model; default: throw new IndexOutOfRangeException(); } } set { switch (index) { case 0: this.make = value; break; case 1: this.model = value; break; default: throw new IndexOutOfRangeException(); } } } }