Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 10.12.2016
Сообщений: 36
1

Не все ветви кода возвращают значение

07.10.2017, 15:32. Показов 2449. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня есть такой кусочек кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*•   метод bool Remove(ResearchTeam rt) для удаления элемента со значением
         *  rt из словаря Dictionary<TKey, ResearchTeam>; 
         * если в словаре нет элемента rt, метод возвращает значение false; */
private static Dictionary<TKey, ResearchTeam> TKeyResearchTeam;
        public bool Remove(ResearchTeam rt)
        {
            ResearchTeam researcht = new ResearchTeam();
            Dictionary<TKey, ResearchTeam>.KeyCollection keyColl = TKeyResearchTeam.Keys;
            if (TKeyResearchTeam.ContainsValue(rt))
            {
                foreach(TKey t in keyColl)
                {
                    TKeyResearchTeam.TryGetValue(t, out researcht);
                    if(rt == researcht)
                    {
                       return TKeyResearchTeam.Remove(t);          
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            else
            {
                return false;
            }
        }
но у меня пишет, не все ветви кода возвращают значение, я не могу понять в чем ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2017, 15:32
Ответы с готовыми решениями:

Не все ветви кода возвращают значение
Подскажите где косяк. Нужен метод который берет каждый элемент массива и ищет повторяется ли он...

Не все ветви кода возвращают значение
Снова эта всеми излюбленная ошибка :D static int SumOfDigits(int n) { if (n...

Не все ветви кода возвращают значение
Помогите исправить ошибки, или подкиньте идеи как ещё можно выполнить задание. Мне нужно было...

Не все ветви кода возвращают значение
В методе Answer не все ветви кода возвращают значение, хотя return в конце есть ...

4
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
07.10.2017, 15:45 2
alya770, Ошибка в том, что не все ветви возвращают значение
Тоесть есть места в коде, где нет return. К примеру, что если, при выполнении программы, будет всегда происходить так, что она будет заходить всегда в этот блок:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            if (TKeyResearchTeam.ContainsValue(rt))
            {
                foreach(TKey t in keyColl)
                {
                    TKeyResearchTeam.TryGetValue(t, out researcht);
                    if(rt == researcht)
                    {
                       return TKeyResearchTeam.Remove(t);          
                    }
                    else
                    {
                        continue;
                    }
                }
            }
А в этом блоке, всегда будет заходить в:
C#
1
2
3
4
else
{
    continue;
}
В этом случае ниразу не будет вызван return, и программа не сможет выйти из метода и вернуть bool
Компилятор на стадии компиляции может это проверить и предостеречь Вас, так как C# является безопасным управляемым языком. Вам нужно переделать Ваш метод, чтобы во всех блоках было точных возврат из метода, чтобы при любом раскладе return был
0
0 / 0 / 1
Регистрация: 10.12.2016
Сообщений: 36
07.10.2017, 16:33  [ТС] 3
Если я убираю этот блок, все равно та же самая ошибка
0
17 / 17 / 23
Регистрация: 22.10.2016
Сообщений: 183
07.10.2017, 17:06 4
попробуйте вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private static Dictionary<TKey, ResearchTeam> TKeyResearchTeam;
        public bool Remove(ResearchTeam rt)
        {
            ResearchTeam researcht = new ResearchTeam();
            Dictionary<TKey, ResearchTeam>.KeyCollection keyColl = TKeyResearchTeam.Keys;
            if (TKeyResearchTeam.ContainsValue(rt))
            {
                foreach (TKey t in keyColl)
                {
                    TKeyResearchTeam.TryGetValue(t, out researcht);
                    if (rt == researcht)
                    {
                        return TKeyResearchTeam.Remove(t);
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            
           return false;
            
        }
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
07.10.2017, 19:02 5
alya770,
Цитата Сообщение от alya770 Посмотреть сообщение
Если я убираю этот блок, все равно та же самая ошибка
Его и не надо убирать. Надо просто перепроверить код, чтобы во всех случаях return был. Я же это хотел до Вас донести, а Вы так и не поняли...
0
07.10.2017, 19:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2017, 19:02
Помогаю со студенческими работами здесь

Не все ветви кода возвращают значение
В данной функции возникает ошибка: &quot;не все ветви кода возвращают значение &quot;, подскажите что не так?...

Не все ветви кода возвращают значение
&quot;....F(int)&quot;: не все ветви кода возвращают значение В чём ошибка и как исправить? Заранее...

Не все ветви кода возвращают значение
static double Main(double a,ref double c) { int n; string v =...

Не все ветви кода возвращают значение
namespace myProgram { class Tablica { private string pole = { { &quot;_ &quot;, &quot;_ &quot;, &quot;_...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru