Change
Console.WriteLine("index {0} holds number {0}", i, Numbers[i]);
to
Console.WriteLine("index {0} holds number {1}", i, Numbers[i]);
Reason: Your indices (in the format string) reference the parameters after the string in zero-based index order. So {0} for the first parameter after the string, {1} for the second, {2} if you have a third etc.
See this page for more info.
edit: You can reference the parameters multiple times in your format String, too. E.g.:
Console.WriteLine(
"index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i]);
This also is equivalent to
Console.WriteLine(String.Format(
"index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i]));