You could cut out the bool array in your original by using a nullable int
public class intArray
{
int?[] arr;
public intArray(int size)
{
arr = new int?[size];
}
public int this[int index]
{
get
{
if (arr[index] == null)
arr[index] = index;
return (int)arr[index];
}
set
{
arr[index] = value;
}
}
}
class Program
{
static void Main(string[] arguments)
{
intArray iarr = new intArray(10);
for (int i = 0; i < 10; ++i)
Console.Out.WriteLine(iarr[i]);
Console.ReadKey();
}
}