Использование модификатора параметров 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д