Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Unassigned local variable


Автор: STRELOKBMSTU 11.3.2008, 22:45
Народ, подскажите в чем у меня косяк?

Есть в классе функция:
Код

        private string ReadMetaFile(string reportfile, out string MetavalueEN)
        {
           FileStream fs = new FileStream(Regex.Replace(reportfile, "\"", ""), FileMode.Open);
           StreamReader str = new StreamReader(fs);
           string filestring, Metavalue;
           while ((filestring = str.ReadLine()) != null)
             {
                if (filestring == "InfoKey: Title")
                {
                    MetavalueEN = Metavalue = Regex.Replace(HttpUtility.HtmlDecode(str.ReadLine()), "InfoValue: ", "");
                }
             }
             str.Close();

             return Metavalue;
       }


В каком случае могут выдаваться два следующих Errora:

1) Use of unassigned local variable 'Metavalue'
2)The out parameter 'MetavalueEN' must be assigned to before control leaves the current method

Автор: PashaPash 12.3.2008, 00:08
STRELOKBMSTU, представь, что str.ReadLine() при первом же вызове вернул null. что вернет функция и что будет присвоено MetavalueEN?

Автор: vponomarov 12.3.2008, 11:12
нужно провести инициализацию переменных MetavalueEN и Metavalue

Автор: STRELOKBMSTU 12.3.2008, 13:03
Т.е. компилятор в цикле while не воспринимает инициализацию?

Автор: vponomarov 12.3.2008, 14:14
в твоем коде возможны ситуации, когда инициализация вообще не произойдет.
поэтому и выдается ошибка.
вообще лучше взять за правило инициализировать переменные при их объявлении.
помогает избежать многих ошибок smile 

Автор: STRELOKBMSTU 12.3.2008, 14:47
Ясно, не знал что во время компиляции настолько все проверяется, я не закладывался на str.ReadLine() == null, потому как в моем случае всегда прорабатывает цикл и if-оператор, теперь буду знать что надо железно проинициализировать переменные перед компиляцией)

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