When you declare an array, you specify exactly how many elements it can contain, and that number can never change. It can't go up, it can't go down. So when you say this:
string[] week = new string[0];
You declare a variable called week which contains a reference to a array which can holed zero strings. That means that any index value will automatically be outside the bounds of the array.
If you know how many items you want to store, use that in the definition:
int loop=14;
string[] week = new string[loop];
for(int i=1;i<=loop;i++)
{
int weekNo=i+10;
week[i-1]=weekNo.ToString();
}
If you don't, then don;t use an array, use a List<T>:
List<string> week = new List<string>();
int loop=14;
for(int i=1;i<=loop;i++)
{
int weekNo=i+10;
week.Add(weekNo.ToString());
}
You can subsequently use indexing on the collection to access individual elements, if you need to.