seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Как правильно определить возращение путем к коду значения функции?

Добрый день!
В начале вопроса я предоставляю код функции определения существования специальности, написанный на C#:
public static bool isProf(string special)
        {
            dynamic sl = JObject.Parse(File.ReadAllText(@"..\..\..\..\data\source\specialization.json"));

            foreach (var property in sl.specialization)
            {
                if (property == special)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

Тип функции: Булевой
Тип параметров функции: Строковой

Пользователь вводя специальность в программе учёта данных, он отправляет введённую специальность в эту функцию. Затем функция обращается к JSON-файлу со списком доступных специальностей и она формирует оттуда список. Если элемент списка соответствует с введённой специальностью, то возвращается "Истина", а иначе "Ложь".

Не только на .NET, а в алгоритме в целом возможно правильное определение возвращения значений функции путями к коду?(судя, по сообщению компилятора):
'"Program.isProf(string)": не все пути к коду возвращают значение. [writecurrentdata]
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@yuopi
C# developer
После цикла нужно написать
return false;
потому что если будет ситуация, что в цикл не попадет программа, то хз что возвращать.

А вообще алгоритм тоже не верный - ваш цикл остановится после первой же проверки.

Метод можно переписать так:
public static bool isProf(string special)
        {
            dynamic sl = JObject.Parse(File.ReadAllText(@"..\..\..\..\data\source\specialization.json"));

            foreach (var property in sl.specialization)
            {
                if (property == special)
                {
                    return true;
                }
            }
            return false;
        }


А может так?
public static bool isProf(string special)
        {
            var sl = JObject.Parse(File.ReadAllText(@"..\..\..\..\data\source\specialization.json"));
            return sl.specialization.Any(e => e == special);         
        }


upd: Еще лучше вынести поле sl в класс, и не читать файл каждый раз, а просто обращаться к полю.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы