Проблема предположительно заключается в следующем расчете:
int SpacesBefore = ((Console.BufferWidth - 1) - Title.Length) / 2;
Проблема вызвана одной из двух причин: либо ширина символа консоли (BufferWidth
) меньше в MacOS, либо ваш заголовок длиннее,Представьте себе, что Title
длина 5 и BufferWidth
10:
SpacesBefore = ((10 - 1) - 5) / 2 = 2
Теперь представьте, что в Mac OS BufferWidth
равно 4:
SpacesBefore = ((4 - 1) - 5) / 2 = -1
И теперь вы хотитечтобы использовать это для построения строки: new string(' ', -1)
, так что вы получите свое исключение.
Быстрое решение может состоять в том, чтобы изменить ваш расчет на это, чтобы гарантировать, что значение всегда> = 0, но я 'Я оставлю вас решать, как это исправить:
int SpacesBefore = Math.Max(0, ((Console.BufferWidth - 1) - Title.Length) / 2);
Я рекомендую узнать, как использовать отладчик , так как проверка значения SpacesBefore
, а затем BufferWidth
будет иметьпозволил вам быстро найти источник проблемы.