@G-d1e

Как применить return внутри функции не используя его для выхода из функции С#?

У меня есть функция в которой применяется try - catch. В catch мне нужно использовать return; , иначе при обращении к переменной выдает ошибку:
Использование локальной переменной "stream", которой не присвоено значение

C return она пропадает, но возникает следующая ошибка:
Требуется объект с типом, приводимым к double

public double streamCurrency(string currency, string link)
        {
            var client = new System.Net.WebClient();
            System.IO.Stream stream;
            String str;
            try
            {
                stream = client.OpenRead(link);
            }
            catch (Exception situation)
            {
                str = String.Format("www.cbr.ru" + "\n{0}", situation.Message);
                materialLabel6.Text = str; return;
            }
            var reader = new System.IO.StreamReader(stream);
            str = reader.ReadToEnd();

            var i = str.IndexOf(currency);
            str = str.Substring(i, 40);
            i = str.IndexOf(">");
            str = str.Substring(i + 1);
            i = str.IndexOf(">");
            str = str.Substring(i + 1, 7);
            double course = Double.Parse(str);

            stream.Close();
            return course;
        }
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Ну так и надо, исходя из заложенного смысла либо если что-то пошло не так - возвращать некое дефолтное/аварийное значение (например (double)0) либо эскалировать аварию дальше (throw)
Ответ написан
Комментировать
NikFaraday
@NikFaraday
Student full-stack Developer
Начните с изучения C# )

Во-первых, у вас вопрос имеет тег "функциональное программирование", что ни коем образом не относится в C#.
Во-вторых, return используется для возвращения некого значения ИЗ МЕТОДА, либо для выхода из тела МЕТОДА.
В-третьих, в C# нет функций.

На счёт вашего кода, внутри блока try/catch у вас вообще нет return. return у вас используется в конце тела МЕТОДА, т.к. метод обязан что-то возвращать, без return работать не будет))

И вот, собственно, ответ на ваш вопрос: вам нужно использовать конструктор для вашей переменной stream. Почитайте об этом хотя бы тут
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы