Давайте попробуем разобраться.
Массив это ограниченный набор некоторых данных определенного типа.
char[] notAllowedSymbols = { '!', '#', '$', '%', '&', '(', ')', '*', ',', '+', '-' };
здесь, вы объявили массив элементов типа
char.
Для доступа к значению в массиве используются индексы.
Первый элемент в массиве доступен по индексу 0.
Второй - по индексу 1.
и так далее.
Можно легко заметить что индекс здесь это по сути просто порядковый номер сдвинутый на единицу.
Теперь возвращаемся к нашему массиву
notAllowedSymbols.
Как теперь, учитывая информацию об индексах, получить доступ к какому-нибудь элементу? В C# для это есть индексаторы:
массив[индекс]
значит для получения первого элемента нужно написать
var firstChar = notAllowedSymbols[0]; // '!'
точно также можно получить любой другой элемент указав правильный индекс (
[i]).
Теперь что касается приведенной части кода: посыл абсолютно правильный - как только мы убедились что строка содержит запрещенный символ нужно прекратить выполнение и сообщить пользователю об ошибке. Но реализация не совсем точная -
break прервет выполнение цикла и пользователь так никогда и не узнает что допустил неточность.
Здесь лучше всего подойдут функции. Вынесем проверку отдельно. Ее результатом может быть или "пройдена успешна" или "содержит ошибки". Всего два значения. Значит, здесь удобно воспользоваться типом
bool.
True будет означать что пароль подходящий и
False будет символизировать ошибку.
Теперь сама реализация
private static bool IsValid(string password)
{
char[] notAllowedSymbols = { '!', '#', '$', '%', '&', '(', ')', '*', ',', '+', '-' };
for (int i = 0; i < notAllowedSymbols.Length; i++)
{
if (password.Contains(notAllowedSymbols[i]))
{
return false;
}
}
return true;
}