Как исправить «Не все пути кода возвращают значение»? - PullRequest
0 голосов
/ 23 сентября 2010

У меня есть массив объектов, который я возвращаю, чтобы использовать объекты в другом методе, однако по какой-то причине он говорит «не все пути кода возвращают значение»

Вот код ....

private object[] runTests(string banText, object tabControlName, int runThisTest, string testName)
    {
        if (stopTests == false)
        {
            var tabPageBrowser = new TabPage();
            var Browser = new WebBrowser();

            (tabControlName as TabControl).TabPages.Add(tabPageBrowser);
            tabPageBrowser.Name = tabControlName.ToString();
            tabPageBrowser.Text = testName;
            tabPageBrowser.Font = new System.Drawing.Font("Trebuchet MS", 8.25F,
                System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            Browser.Dock = DockStyle.Fill;
            Browser.Url = new Uri(testStrings(runThisTest, banText));
            Browser.Name = tabControlName.ToString();
            Browser.ScriptErrorsSuppressed = true;
            tabPageBrowser.Controls.Add(Browser);

            try
            {
                while (Browser.ReadyState != WebBrowserReadyState.Complete)
                {
                    Application.DoEvents();
                }
            }
            catch
            {
                return null;
            }
            IntPtr pHandle = GetCurrentProcess();
            SetProcessWorkingSetSize(pHandle, -1, -1);

            object[] browserObjects = new object[2];
            browserObjects[0] = tabPageBrowser;
            browserObjects[1] = Browser;

            if (browserObjects != null)
            {
                return browserObjects;                    
            }
        }
    }

Я не понимаю, что я делаю не так, не могли бы вы помочь?Спасибо!

Ответы [ 6 ]

16 голосов
/ 23 сентября 2010

Метод не возвращает, если

stopTests == true

- или -

browserObjects == null

4 голосов
/ 23 сентября 2010

Возвращает значение во всех путях кода

4 голосов
/ 23 сентября 2010

Подсказка: попытайтесь найти путь, который не проходит через return.

2 голосов
/ 23 сентября 2010

в вашем коде у вас нет другой части, поэтому здесь я возвращаюсь ноль.

    if (stopTests == false) 
    {
        //your code 
    }
    else
        return null;
2 голосов
/ 23 сентября 2010

Метод получателя или метода доступа должен всегда возвращать примитивное значение или объект.

В вашем примере вы говорите

private object[] runTests(...) // Which means that no matter what, this method must return object[] or throw an exception

Чем у вас есть условие:

if(my_condition_is_met)
{
 do_some_processing();
}

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

Примитив, но, надеюсь,имеет смысл ...

1 голос
/ 23 сентября 2010
return browserObjects;     

отбросьте оператор if. технически, что оператор if будет всегда срабатывать, но компилятор не пойдет так глубоко (хотя контракты с кодом будут такими глубокими)

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