Обнаружен недоступный код в C # при возврате 2 значений - PullRequest
0 голосов
/ 17 октября 2018
public int Number;
public int NumberTwo;
int GiveDouble() {
    return Number * 3;
    return NumberTwo * 5; // compiler says this is unreachable
}
void Start() {
    int returnedNumber = GiveDouble();
    // ...
    int returnedNumber2 = GiveDouble();
    // ...
}

Или image

Я пытаюсь вернуть 2 значения из одной функции в две различные переменные в другой функции.

В этом случае ..Я посылаю 2 значения из функции GiveDouble() в переменные ReturnedNumber и ReturnedNumber2 в функции Start().Входные данные приведены в UNIY engine.

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

Мой вопрос может быть не столь разумным.Я все еще учусь сейчас.Я хочу знать, почему это происходит?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

просто для ясности, когда вы говорите return Number * 3;, вы заканчиваете этот метод там и возвращаете Number * 3.return заставляет компилятор выпадать из метода и двигаться дальше, так что в основном это все равно, что сказать, что вы сделали с этим методом, поэтому код недоступен.

int GiveDouble() {
    return Number * 3;
    return NumberTwo * 5; // compiler says this is unreachable
}

сотрите это и попробуйте

int TimesThree(int one){
return one*3;
}
int TimesFive(int two){
return two*5;
}

, затем измените:

   int returnedNumber = GiveDouble();
    // ...
    int returnedNumber2 = GiveDouble();

на

    int returnedNumber = TimesThree(Number);
    // ...
    int returnedNumber2 = TimesFive(NumberTwo);
0 голосов
/ 17 октября 2018

Компилятор прав;один вызов может вернуть только одно значение.Вы вызываете метод дважды , но это не возобновляет метод - он вызывает его снова с самого начала, поэтому каждый раз будет возвращаться первый результат.

Одним из вариантов здесь могут быть «кортежи значений»:

    (int, int) GiveDouble()
    {
        return (Number * 3, NumberTwo * 5);
    }
    void Start()
    {
        (int returnedNumber, int returnedNumber2) = GiveDouble();
    }

или с лучшим именованием кортежей:

    (int Foo, int Bar) GiveDouble()
    {
        return (Number * 3, NumberTwo * 5);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...