Подтвердить что ты не робот

Отклонения в С# string.split

Я, наверное, пропустил что-то очень основное, но это меня озадачило.

При использовании String.Split() я получаю разные результаты между

.Split(' ') 

и

.Split(new char[' '])

С учетом этого кода:

using (System.IO.StreamWriter sw = new StreamWriter(@"C:\consoleapp1.log", true))
{
    string anystring = "pagelength=60 pagewidth=170 cpi=16 lpi=8 landscape=1 lm=2";
    sw.WriteLine(".Split(' ')");
    string[] anystrings1 = anystring.Split(' ');
    for (int i = 0; i < anystrings1.Length; i++)
    {
        sw.WriteLine([email protected]"{i,2}: {anystrings1[i]}");
    }
    sw.WriteLine(".Split(new char[' '])");
    string[] anystrings2 = anystring.Split(new char[' ']);
    for (int i = 0; i < anystrings2.Length; i++)
    {
        sw.WriteLine([email protected]"{i,2}: {anystrings2[i]}");
    }

}

Почему я получаю разные результаты:

.Split(' ')
 0: pagelength=60
 1: pagewidth=170
 2: cpi=16
 3: lpi=8
 4: landscape=1
 5: lm=2
.Split(new char[' '])
 0: pagelength=60 pagewidth=170 cpi=16 lpi=8 landscape=1 lm=2
4b9b3361

Ответ 1

new char[' ']

не делает то, что вы думаете.

Пробел ASCII-символ 32 (и С# допускает неявные преобразования между char и int). Таким образом, код создает массив из char с размером 32.