Использование модификатора параметров out - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Этот метод проверяет строку на соответствие наличию/отсутствию (в зависимости от параметра allow) в строке input символов, указанных в массивах chars и othch. При наличии запрещёных символов в массив erind пишутся их индексы; при отсутствии - одно значние (-1). C# 2010 Express выдаёт ошибку со следующим текстом: "До передачи управления из текущего метода параметру, помеченному ключевым словом out, "erind" должно быть присвоено значениe", хотя завершить метод с пустым (или имеющим элементы со значением null) массивом erind по идее нельзя. Вот этот метод:
        public bool chk_text(string input, int len, bool allow, char[] chars, char[] othch, out int[] erind)
        {
            Array.Resize(ref chars, chars.Length + othch.Length);
            for (int i = 0; i < othch.Length; i++)
            {
                chars[chars.Length + i] = othch[i];
            }
            //erind.DefaultIfEmpty(-1);
            Array.Resize(ref erind, 0);
            char tested;
            if (input.Length > len)
            {
                MessageBox.Show("Error: text is too long.");
                Array.Resize(ref erind, input.Length - len);
                for (int i = len; i < input.Length; i++)
                {
                    erind[i - len] = i;
                }
                return false;
            }
            if (input.Length > 0)
            {
                for (int i = 0; i <= input.Length - 1; i++)
                {
                    tested = input.ElementAt(i);
                    if (chars.Contains(tested) != allow)
                    {
                        if (erind.Length == 0) MessageBox.Show("Error: text contains forbidden symbols.");
                        Array.Resize(ref erind, erind.Length + 1);
                        erind[erind.Length - 1] = i;
                        return false;
                    }
                }
            }
            Array.Resize(ref erind, 1);
            erind[0] = -1;
            return true;
        }
Буду благодарен, если объясните в чём дело.

Решение задачи: «Использование модификатора параметров out»

textual
Листинг программы
MessageBox.Show("Error: text is too long.");
Array.Resize(ref erind, input.Length - len);
return false;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы