Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > проблемы с variables scope


Автор: khorght 13.7.2010, 22:46
В консольном приложении есть метод в котором:
Код

        static void startRec(String pid)
        {
            IntPtr hndl;
            Process[] localByName = Process.GetProcessesByName("App");
            int i = localByName.Length;
            while (i > 0)
            {
                if (localByName[i - 1].Id.ToString() == pid)
                {
                   hndl = localByName[i - 1].Handle;
                }
                i -= 1;
            }
            SetForegroundWindow(hndl);
         }


Visual Studio 2010 пишет ошибку  на последнюю строчку use of unassigned variable. ткните носом дауна где ошибка! уже и в  public переменную совал тогда наоборот внутри цикла if пишет use of unassigned variable. на С# пишу впервые но такого бреда с variable scopes не встречал. если переменная объявлена паблик то как она может быть не видна где-то внутри класса если должна быть видна даже вне его?!



Автор: Void 13.7.2010, 22:52
Дело не в scope, она видна. unassigned — не инициализированная. Компилятор не может гарантировать, что переменной hndl будет присвоено какое-то значение до того как она будет использована в вызове SetForegroundWindow. Лечится инициализацией переменной: IntPtr hndl = IntPtr.Zero.

Автор: khorght 13.7.2010, 22:56
действительно. только сейчас доперло, у меня же там условие. спасибо, пойду перечитывать азы ООП, видимо отупел окончательно.

Автор: Mephisto 15.7.2010, 16:55
Цитата(khorght @  13.7.2010,  23:56 Найти цитируемый пост)
пойду перечитывать азы ООП, видимо отупел окончательно. 

ООП тут не при чем. Это просто возможное использование неинициализированной переменной.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)