C # - ошибка «не все пути кода возвращают значение» с массивом в качестве параметра out - PullRequest
1 голос
/ 01 августа 2011

У меня есть следующий код:

public int GetSeatInfoString (выбор DisplayOptions, строка out [] strSeatInfoStrings)

    {
        strSeatInfoStrings = null;
        int count = GetNumOfSeats(choice);

        if ((count <= 0))
            return 0;

        strSeatInfoStrings = new string[count];

        int i = 0;

        for (int index = 0; index <= m_totNumOfSeats - 1; index++)
        {
            if (string.IsNullOrEmpty(m_nameList[index]))
                strSeatInfoStrings[i++] =

m_nameList [индекс] .ToString (); }

    }

Этот код выдает ошибку "... GetSeatInfoString.DisplayOptions, out string []) ': не все пути кода возвращают значение. По сути, в этом методе я пытаюсь циклически проходить через массив и для любых значений в массиве, которые содержат строку, я хочу, чтобы они затем добавлялись в новый массив strSeatInfoStrings, который, в свою очередь, может вызываться из отдельного класса, а новое содержимое массива затем отображалось в списке.

Любые предложения о том, как исправить это?

Заранее спасибо

Ответы [ 6 ]

3 голосов
/ 01 августа 2011

У вас нет окончательного возврата до выхода из метода.Вы выходите, если нет элементов, но вам нужен возврат в конце.Если вас не интересует значение, то почему бы не установить тип возвращаемого значения void?

0 голосов
/ 01 августа 2011

Какое значение вы хотите вернуть из этой функции? Я думаю, что вам нужно добавить эту строку в конец:

return i;

0 голосов
/ 01 августа 2011

Вы возвращаете значение только если count <= 0. Либо вам нужно возвращать значение после цикла for, либо изменить подпись метода на void, в зависимости от того, что вы хотите, чтобы возвращаемое значение представляло. </p>

Если вы хотите вернуть массив с подсчетами in, измените тип возвращаемого значения на string [] и удалите аргумент out.

0 голосов
/ 01 августа 2011

Вы можете добавить возврат strSeatInfoStrings.Length в конце

public int GetSeatInfoString(DisplayOptions choice, out string[] strSeatInfoStrings)

    {
        strSeatInfoStrings = null;
        int count = GetNumOfSeats(choice);

        if ((count <= 0))
            return 0;

        strSeatInfoStrings = new string[count];

        int i = 0;

        for (int index = 0; index <= m_totNumOfSeats - 1; index++)
        {
            if (string.IsNullOrEmpty(m_nameList[index]))
                strSeatInfoStrings[i++] =
m_nameList[index].ToString(); }

    return strSeatInfoStrings.Length;

    }
0 голосов
/ 01 августа 2011

Ошибка не связана с вашим параметром out.

Ваш метод

public int GetSeatInfoString(
                   DisplayOptions choice, out string[] strSeatInfoStrings)

объявлен как возвращающий int и не делает этого для всех путей кода.

0 голосов
/ 01 августа 2011

Вам необходимо вернуть целочисленное значение в соответствии с сигнатурой ваших методов.

После того, как цикл for будет возвращать значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...