Edit
Console.WriteLine("index {0} holds number {0} ", i, Numbers[i]);
to
Console.WriteLine("index {0} holds number {1} ", i, Numbers[i]);
Reason: your indexes (in the format string) refer to the parameters after the string in the zero index. So, {0} for the first parameter after the line, {1} for the second, {2} if you have a third, etc.
See this page for more details.
edit: You can also reference parameters several times in your String format. For instance:.
Console.WriteLine( "index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i]);
It is also equivalent
Console.WriteLine( String.Format( "index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i] ) );
source share