Cs0161 c как исправить
Перейти к содержимому

Cs0161 c как исправить

  • автор:

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

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

public static int Nikita(int a, int b, char d) < switch (d) < case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': return a / b; default: Console.WriteLine("Ошибка"); break; >//return a - b; > static void Main(string[] args) < < Console.Write("вевдите первое число: "); int am = (int)Convert.ToInt64(Console.ReadLine()); Console.Write("введите знак: "); char dm = Convert.ToChar(Console.ReadLine()); Console.Write("введите второе число: "); int bm = (int)Convert.ToInt64(Console.ReadLine()); int resault = Nikita(am, bm, dm); Console.WriteLine(am); Console.WriteLine(bm); Console.WriteLine(dm); Console.WriteLine(resault); >> > >
  • Вопрос задан более трёх лет назад
  • 2049 просмотров

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

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

firedragon

Владимир Коротенко @firedragon

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

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

Решения вопроса 2

GavriKos

Ну вам даже на русском пишут (кстати переключите на английский. И код в тег код оберните).
Что должна вернуть функция Nikita, если я в нее передам третим параметром ‘q’, например?
Крч функция с возвращаемым параметром должна возвращать значение ВСЕГДА. Или кидать эксепшн.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

MaksTR

В секции default тоже должен присутствовать return. Об этом и говорит текст ошибки «не все пути к коду возвращают значение»

default: Console.WriteLine("Ошибка"); return значение_при_ошибке; break;

Ошибка CS0161 C#

Скорее всего проблема не в этом куске коде, а в целом методе — он не возвращает значение. Если же это весь отрывок кода — просто за цыклом кинь ошибку: «throw new Exception(«В цыкле что-то пошло не так и последний элемент не найден»);»

2 ноя 2020 в 11:04
2 ноя 2020 в 12:43

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Можно бросить исключение (которое не будет выброшено никогда), чтобы успокоить компилятор.

for(int i = 0; i < X; i++) < // Код if(i == X - 1) < return Value; >> throw new Exception("Вот сейчас очень неожиданно было"); 

Отслеживать
ответ дан 2 ноя 2020 в 16:41
47.7k 5 5 золотых знаков 22 22 серебряных знака 57 57 бронзовых знаков

Честно говоря, непонятно, в чём вообще смысл данного куска кода. Он совершенно равнозначен такому коду (если вы не меняете i и/или X внутри цикла, что было бы очень плохим стилем программирования), при этом компилятор ругаться не будет и читается такой код легче:

for(int i = 0; i < X; i++) < // Код >return Value; 

Но в общем случае компилятор не обязан знать, что у вас будет происходить в процессе работы программы, он просто видит, что если if не сработает, то из функции ничего не вернётся, а поскольку C# строго типизированный язык, вы не можете в одной ветке кода что-то вернуть, а в другой ничего не вернуть. (Хотя, например, язык Python такое допускает, в этом случае в нём вернётся None , но он и не язык со строгой типизацией.)

Так что вам в любом случае надо сделать так, чтобы все ветки кода возвращали значение (либо бросали исключение).

Не могу компилировать программу по ошибке CS0161 (x2)

Возникла проблема с компилированием программы, что мне надо дописать чтоб ошибка пропала? Подскажите пожалуйста. ( не знаю потому что надо кое что изменить в программе а тут ошибка ) dnSpy used

Лучший ответ

return 0;

Остальные ответы

Там где в методах объявлен возвращаемый тип отличный от void, требуется вернуть объект объявленного типа, либо типа, который можно неявно привести к объявленному без потери точности. Для этого используется инструкция return

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

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

На экзамене три студента выпускают одну и ту же задачу независимо друг от друга. У каждого студента есть своя вероятность решения задачи. Смоделируйте процесс решения задачи: каждый студент рассматривает задачу по очереди, моделирование завершается, когда один из студентов решает задачу. Когда решение задачи найдено, отправьте сообщение всем студентам, кроме студента, который нашел решение, о том, что он был найден, и о том, что он был найден в первом раунде, с помощью механизма реализации событий.

Помогите пожалуйсте, до завтра нужно сдать

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Ошибка в функции — Не все пути к коду возвращают значение
1)Метод инициализации полей Init — метод должен контролировать корректность аргументов; 2)ввод с.

Не все пути к коду возвращают значение
Пытаюсь сделать вычисление среднего арифметического с помощью вспомогательного метода, хотел как.

Не все пути к коду возвращают значение
Есть пример в котором имеется факториал,хочу сделать метод для его вычисления,чтоб каждый раз не.

Не все пути к коду возвращают значение
namespace _1 < class Aquaticnimals < public Aquaticnimals(string name.

Эксперт .NET

15078 / 10373 / 2725
Регистрация: 21.04.2018
Сообщений: 30,764
Записей в блоге: 2

Лучший ответ

Сообщение было отмечено Janibek как решение

Решение

ЦитатаСообщение от Janibek Посмотреть сообщение

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *