Возвращение значения из метода C#

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

 int[] quicksortfaster(int[] list,int piv)
    {
        int j = 0;
        for (int i = 0; i < piv; i++)
        {
            if (list[i] > list[piv]) i += 1;
            else
            {
                int w = list[i];
                list[i] = list[j];
                list[j] = w;
                j += 1;
            }
        }
int k = list[j];
    list[j] = list[piv];
    list[piv] = k;
            
        if (j == 0 ) return list;
        else if (j == piv)
        {
            return quicksortfaster(list,piv - 1);
        }
        else if (j == piv - 1)
        {
            return quicksortfaster( list, piv - 1);
        }
        else if (j > 0)
        {
            return quicksortfaster(list, piv);
        }
        
    }

Ответы (1 шт):

Автор решения: CrazyElf
        else if (j > 0)
        {
            return quicksortfaster(list, piv);
        }
        // вот тут ничего не возвращается!!
    } 

Поскольку я так понимаю j не может быть отрицательное, а остальные все варианты, включая 0, уже проверены раньше, тут просто нужно убрать излишнюю проверку:

        return quicksortfaster(list, piv);
    } 

Вот теперь ваша функция всегда что-нибудь возвращает.

Управление и раньше не попадало у вас в то место, которое смущает компилятор, но на то он и компилятор, что заранее он не может наверняка знать, какие у вас будут значения переменных при выполнении программы. Поэтому он требует, чтобы функция возвращала значение при любых вариантах ветвления, даже невозможных фактически в вашем случае (но возможных теоретически).

→ Ссылка