Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу Видимость переменных С#
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Paravozzz Paravozzz вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2011
По умолчанию Видимость переменных С# - 03.09.2012, 20:28

Доброго времени суток!

Подскажите, почему возникает ошибка "Использование локальной переменной, которой не присвоено значение" в выделенных жирным переменных? и можно ли это как-нибудь исправить?

Код:
public void drawViewPortBorder(double borderStartXInt, double borderStartYInt, double borderWidthInt, double borderHeightInt, byte StampType)
        {
            
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acDocDb = acDoc.Database;
            using (Transaction acTrans = acDocDb.TransactionManager.StartTransaction())
            {
                double stampWidth; double stampHeight;
                switch (StampType)
                {
                    case 0:
                            stampWidth = 185;
                            stampHeight = 55;
                            break;
                    case 1:
                            stampWidth = 185;
                            stampHeight = 15;
                            break;
                }

                BlockTable acBT;
                acBT = acTrans.GetObject(acDocDb.BlockTableId, OpenMode.ForRead) as BlockTable;
                BlockTableRecord acBTR;
                acBTR = acTrans.GetObject(acDocDb.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;

                Polyline objViewPortBorder = new Polyline(); // Рамка для Видового экрана.
                objViewPortBorder.SetDatabaseDefaults();
                
                if (borderWidthInt > stampWidth)
                {
                    objViewPortBorder.AddVertexAt(0, new Point2d(borderStartXInt, SC.Border.startYInt), 0, 0, 0);
                }
                else
                {
                    objViewPortBorder.AddVertexAt(0, new Point2d(borderStartXInt, SC.Border.startYInt + stampHeight), 0, 0, 0);
                }

                objViewPortBorder.AddVertexAt(1, new Point2d(borderStartXInt, borderStartYInt + borderHeightInt), 0, 0, 0);
                objViewPortBorder.AddVertexAt(2, new Point2d(borderStartXInt + borderWidthInt, borderStartYInt + borderHeightInt), 0, 0, 0);
                objViewPortBorder.AddVertexAt(3, new Point2d(borderStartXInt + borderWidthInt, borderStartYInt + stampHeight), 0, 0, 0);
                objViewPortBorder.AddVertexAt(4, new Point2d(borderStartXInt + (borderWidthInt - stampWidth), borderStartYInt + stampHeight), 0, 0, 0);
                
                if (borderWidthInt > stampWidth)
                {
                    objViewPortBorder.AddVertexAt(5, new Point2d(borderStartXInt + (borderWidthInt - stampWidth), borderStartYInt), 0, 0, 0);
                    objViewPortBorder.AddVertexAt(6, new Point2d(borderStartXInt, borderStartYInt), 0, 0, 0);
                }
                else
                {
                }
                
                objViewPortBorder.Closed = true;
                objViewPortBorder.Layer = "_border";
                
                AAEntity(acTrans, acBTR, objViewPortBorder);

                acTrans.Commit();
                acTrans.Dispose();
            }
        }
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,470
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 04.09.2012, 09:01

Ошибка возникает потому, что вы "используете локальную переменную, которой не присвоено значение". Что будет, если StampType будет равно не 0 и не 1??
csharp Код:
double stampWidth = 1;
                double stampHeight = 1;
                switch (StampType)
                {
                    case 0:
                            stampWidth = 185;
                            stampHeight = 55;
                            break;
                    case 1:
                            stampWidth = 185;
                            stampHeight = 15;
                            break;
                }

csharp Код:
double stampWidth, stampHeight;
                switch (StampType)
                {
                    case 0:
                            stampWidth = 185;
                            stampHeight = 55;
                            break;
                    case 1:
                            stampWidth = 185;
                            stampHeight = 15;
                            break;
                    default:
                            stampWidth = 1;
                            stampHeight = 1;
                            break;
                }
Ответить с цитированием
Пользователь сказал cпасибо:
Paravozzz (04.09.2012)
  (#3 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 04.09.2012, 09:46

В отличие от C или C++, значение неинициализированной переменной в C# всегда будет 0. Однако компилятор совершенно прав, указывая, что вы "используете локальную переменную, которой не присвоено значение". Компилятору неизвестно, какое значение вы предполагали бы хранить в этой переменной....


The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видимость панелей и элементов на них Leon C++ Builder 5 17.10.2011 07:44
видимость полигона или вершины -nad- OpenGL 0 19.07.2011 19:06
Типы переменных kminas Visual Basic 3 02.02.2008 00:55
Видимость переменной одного класса из другого yury_m Visual C++ 32 19.12.2007 22:31
Видимость DIV-слоев внутри IFRAME в doc.all.tags("DIV&a p519446 DHTML, JavaScript, VBScript 1 26.09.2005 03:14
Редактирование переменных в С++ SergeON Visual C++ 10 30.07.2005 23:36
Видимость переменной на форме blur Delphi 3 21.07.2005 15:06
Два модуля. Видимость типов Татьяна C++ Builder 1 28.05.2005 17:59
TChart и видимость кривых ИА C++ Builder 2 23.05.2005 18:32
Использование переменных stl в MFC Алекс-Фантомас Visual C++ 3 24.09.2004 21:54
Расположение переменных в ОЗУ MVC++ Anonymous Visual C++ 9 26.12.2003 15:51
Объявление переменных Stanis Laugh PHP 3 26.09.2002 19:57



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов