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

от admin

Как решить проблему CS0161 в C#?

Я новичок в C# и недавно начал изучать функции. Мне надо сделать программу которая запрашивает числа, знак и выполняет действие (калькулятор короче). Но я столкнулся с проблемой, вот как она звучит:
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка CS0161 ‘»Program.Nikita(int, int, char)»: не все пути к коду возвращают значение.
вот код программы:

  • Вопрос задан более двух лет назад
  • 1755 просмотров

Простой 1 комментарий

  • Facebook
  • Вконтакте
  • Twitter

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

Тот же хром кстати предлагает автоматический перевод, на удивление не плохой. Можно по диагонали посмотреть и потом переключиться на английский понять все тонкости.

Ошибка "не все пути к коду возвращают значение"

Задание — написать метод, принимающий int значение number и возвращающий сумму чисел от 1 до number. Подскажите, пожалуйста в чем причина ошибки "CS0161 — "Program.Sum(int)": Не все пути к коду возвращают значение" и как этой ошибки избежать.

Не все пути к коду возвращают значение — значит, что есть такие параметры, при которых функция, которая должна вернуть значение, выполнит команду return — то есть не вернет значение. Это может произойти по разным случаям: вы не написали команду return, вы написали ее в условии, которое не всегда истинно, ИЛИ вы написали ее в цикле, который может не дойти до этой строки.

Проще говоря, представьте, что произойдет, если на вход в функцию попадет неположительное число.

Если вы хотите посчитать сумму чисел от 1 до N, то возвращение результата должно будет после цикла, когда результат переменной result сформировался окончательно:

Максим Фисман's user avatar

Значение нужно возвращать вне цикла

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.13.43310

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

C# CS0161 Not all code paths return a value

Ошибка C# CS0161 Not all code paths return a value (Не все ветви кода возвращают значение) кроется в том, что можно перепутать возвращаемый метод и метод, который ничего не возвращает.

Например, если написать:

public class Program

public static void Main()

static string Test(string a)

На первый взгляд, кажется всё нормально. Но компилятор ругается на строку с названием метода Test. Почему? Да потому, что вместо того, чтобы вернуть значение а в консоль просто выводится значение а. Исправим ситуацию:

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

Проинициализируй переменные например вот так:

И посмотри на сигнатуру своей функции:

public static double Ras_cv_nevti_v_plas(double ppl, double Tpl, double Rnd, double G, double Pnas, double Rgo, out double Mn_pl)

Она у тебя возвращает значение double, а у тебя ни одного return во всей функции

Добавь в код возврат значения, либо поменяй возвращаемый тип на void

  • Изменено Дмитрий Арндт 20 декабря 2011 г. 7:39 a
  • Помечено в качестве ответа Abolmasov Dmitry 21 декабря 2011 г. 9:34
Читать:
An error occurred on client что делать

Все ответы

> В итоге переменная del не определена и не все ветви кода возвращают значение. тоже и с остальными 2.

скорее всего требуется <= и >=, вместо < и >.
например, следующий код ничего не выводит из-за < и >.

  • Помечено в качестве ответа Abolmasov Dmitry 21 декабря 2011 г. 9:34

попробовал, не помогло. »ошибка неопределения переменной» возникает после условия при использовании этой переменной. А »не все ветви кода воз. » для всего метода. скидываю весь метод:

public static double Ras_cv_nevti_v_plas(double ppl, double Tpl, double Rnd, double G, double Pnas, double Rgo, out double Mn_pl)

double x, an, m, Gpl, a, Y, G1, Rgr_pl, Mnd, A, B, bnpl, Mnd_t, del, Rn_pl, a1, b1, Mn_nas, sig;

m = 1 + 0.029 * (Tpl — 293) * (Rnd * Rgo * 1e-3 — 0.7966);

a = 1 + 0.0054 * (Tpl — 293);

Rgr_pl = a * m * Rgo * G / Gpl;

Y = 1e-3 * (4.3 — 3.54 * 1e-3 * Rnd + 1.0337 * Rgr_pl / a + 5.581 * 1e-6 * Rnd * (1 — 1.61 * 1e-6 * Rnd * Gpl) * Gpl);

an = 1e-3 * (3.083 — 2.638 * 1e-3 * Rnd);

an = 1e-3 * (2.513 — 1.975 * 1e-3 * Rnd);

bnpl = 1 + (1.0733 * 1e-3 * Rnd * Y * Gpl) / m + an * (Tpl — 293) — 6.5 * 1e-4 * ppl; \\ Здесь неопределена an

Rn_pl = Rnd * (1 + 1.293 * 1e-3 * Rgr_pl * Gpl / (m * a)) / bnpl;

x = (0.658 * Rnd * Rnd) / (866 * 1e3 — Rnd * Rnd);

Mnd = Math.Pow(x, 2);

if (780 < Rnd && Rnd <= 845)

x = (0.456 * Rnd * Rnd) / (833 * 1e3 — Rnd * Rnd);

Mnd = Math.Pow(x, 2);

a1 = Math.Pow(10, (-0.0175 * (293 — Tpl) — 2.58));

b1 = (8 * 1e-5 * Rnd — 0.047) * Math.Pow(Mnd, 0.13 + 0.002 * (Tpl — 293)); \\Здесь неопределена Mnd

Mnd_t = Mnd * Math.Pow(Tpl — 293, a1) * Math.Exp(b1 * (293 — Tpl));

G1 = 1.055 * 1e-3 * (1 + 5 * an) * G * Rnd;

A = 1 + 0.0129 * G1 — 0.0364 * Math.Pow(G1, 0.85);

B = 1 + 0.0017 * G1 — 0.0228 * Math.Pow(G1, 0.667);

Mn_nas = A * Math.Pow(Mnd_t, B);

if (Mn_nas > 0 && Mn_nas < 5)

del = 0.0114 * Mn_nas;

if (Mn_nas > 5 && Mn_nas < 10)

del = 0.057 + 0.023 * (Mn_nas — 5);

if (Mn_nas > 10 && Mn_nas < 25)

del = 0.0171 + 0.031 * (Mn_nas — 10);

if (Mn_nas > 25 && Mn_nas < 45)

del = 0.643 + 0.045 * (Mn_nas — 25);

if (Mn_nas > 45 && Mn_nas < 75)

del = 1.539 + 0.058 * (Mn_nas — 45);

if (Mn_nas > 75 && Mn_nas < 85)

del = 3.286 + 0.100 * (Mn_nas — 75);

Mn_pl = Mn_nas + del * (ppl — Pnas); \\ Здесь неопределена del

sig = Math.Pow(10, -(1.58 + 0.05 * ppl) — 72 * 1e-6 * (Tpl — 305));

Интересно что при добавлении в условие еще 1 ветви else и присвоении неопр-м переменным любого числа проблема исчезает. А вот с »не все ветви кода воз. » даже нет вариантов как решить

Похожие статьи