/*
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();
}
}
}
}