string table = "?-?";
string[] chars = { "&", "x" };
IEnumerable<string> vs = new List<string> { "" };
for (int i = 0; i < table.Length; i++)
{
if (table[i] != '?')
vs = vs.Select(x => x + table[i]);
else
vs = vs.SelectMany(x => chars.Select(y => x + y));
}
Я могу запустить и скомпилировать вышеуказанное без каких-либо исключений, но когда я пытаюсь увидеть элементы в vs
с помощью Console.WriteLine(string.Join(", ", vs));
, я получаю System.IndexOutOfRangeException
в строке vs = vs.Select(x => x + table[i]);
.
Причина исключения: i
. Странно то, что i
это 3 в окне «Локальные», а у меня i < table.Length
в for l oop. Итак, i
не может быть 3, но это так!
Мой вопрос в том, почему i
становится 3 и почему исключение появляется только тогда, когда я хочу распечатать результат.
I've tried the following to print the output too, but I got the same result.
foreach (var comb in vs)
Console.WriteLine(comb);