Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 60

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 54 55 56 57 58 59 < 60 > 61 62 63 64 65 66 .. 404 >> Следующая


Переменные, область действия которых распространяется только на одну функцию, называются локальными. Существует возможность описания глобальных переменных, чья область действия охватывает сразу несколько функций. Внесите в программу следующие изменения:

class Classl (

static eCring myString;
Функции

119

static void Write О

(

string myString = 'String defined in Writef)';

Console.WriteLine('Now inWriteO');

Console. WriteLine ('Local mystring * (0}*!, nyString);

Console.WriteLine^'Global mystring ж 10>', Classl.mystring)?

)

static void Main(string[] args)

(

string mystring - 'String defined in MainO ‘>

Classl.nyString = 'Global string';

Write()i

Console.WriteLine('\nKow in MainO') f

Console.WriteLine('Local nyString » (0}', nyString);

Console.WriteLine('Global mystring = (0)*, Classl.nyString); ) ~

В данном случае будет получен следующий результат:

е rjLSh arp\Chap L ^ 16\С ЬиБЕкО 1 :h i Е\0 fc |\С Ы и- fн( I!

Цои in Write О

Local : !..¦ i im rirtg 11 ¦ ¦ ' in '..'¦¦¦¦ ^ >

Gluh-il niyS I i[iy (.''kiJjui -.iirihiLj

Norf in Main i)

I.,muni nyString - Striny defineи .in )

Pl'CSE illiy Itey LO CDl>tjimse

J,

il ± ж

На этот раз мы включили в код еще одну переменную с именем mystring, изменив иерархию нмен в программе. Эта переменная описана следующим образом:

static string nyString;

Обратите внимание, что нам вновь потребовалось использовать ключевое слово static. Мы не будем вдаваться в детали: на данном этапе достаточно знать, что для консольных приложений данного типа в описании глобальных переменных обязательно использование либо ключевого слова static, либо ключевого слова const. Если мы планируем изменять значение глобальной переменной, то обязательным является ключевое слово static, так как const запрещает любые изменения значения переменной.

Для того чтобы отличать глобальную переменную от локальных переменных с тем же именем в функциях Main<) и writeo, нам необходимо классифицировать имя глобальной переменной, используя полностью квалифицированное имя, которое описано в главе 3. В данном случае мы обращаемся к глобальной переменной по имени ciaesi.mystring. Обратите внимание, что это необходимо делать только в том случае, если существуют глобальная и локальная переменные с одинаковым именем; если бы локальной переменной с именем mystring не существовало, то мы совершенно свободно могли бы использовать для обращения к глобальной переменной имя mystring вместо classl.mystring. В том случае, когда используется локальная переменная, имя которой совпадает с именем глобальной переменной, говорят, что глобальная переменная является скрытой.
120 Главаб

Значение глобальной переменной задается в функции Maino:

Clasal.myString = 'Global string';

и используется в функции write О:

Console.WriteLine('Global myString = (0]', Classl.rayString);

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

Область действия переменных и другие программные конструкции

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

int i;

for (i * 0) i < 10; 1++)

{

string text = 'Line ' + Convert.ToString(i);

Conaole.WriteLine{*(0)*, text);

) ’¦

Console.WriteLine("Lest text output in loop: 10}*, text);

В данной программе строковая переменная text является локальной для цикла for. Такой код ие пройдет компиляцию, поскольку в обращении к console.WriteLine о , которое происходит вне этого цикла, делается попытка использовать переменную text, область действия которой не распространяется за пределы цикла. Изменим код следующим образом:

int i j

string text;

for (i = 0; i < 10; i + + )

< ...... .....

text ¦ 'Line ¦ + Convert.ToString(i> ,*

Console.WriteLine('(О)', text);

>

Console.WriteLine('Last text output in loop: (0)', text);

Этот код также недопустим. Причина кроется в том, что переменные должны и описываться, и инициализироваться до того, как они будут использоваться, а переменная text инициализируется только в цикле for. Значение, присвоенное переменной
Предыдущая << 1 .. 54 55 56 57 58 59 < 60 > 61 62 63 64 65 66 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.