|
Программирование >> Программирование с использованием ajax
Операции присваивания Пока что в этой главе встречалась только простая операция присваивания (=) и то, что доступны и другие операции присваивания, вообще может стать сюрпризом. Однако другие операции присваивания действительно существуют и, что даже может, пожалуй, стать еще большим сюрпризом, являются довольно полезными! Все остальные операции присваивания, кроме операции =, работают подобным образом. Как и операция =, они все приводят к присваиванию значения той переменной, которая находится в их левой части, на основании операндов и операций, находящихся в их правой части. Увидеть, что это за операции можно в табл. 3.9. Таблица 3.9. Другие операции присваивания
В этой таблице видно, что все дополнительные операции приводят к включению varl в производимые расчеты, а это значит, что строка кода вроде varl += var2; будет иметь точно такой же результат, как и строка кода varl = varl + var2; Операция += может еще также использоваться и со строками, точно так же, как операция -h. Применение этих операций, особенно в случае длинных имен переменных, может делать код гораздо более удобочитаемым. Приоритеты операций При вычислении выражения каждая операция обрабатывается по очереди, что вовсе не обязательно означает, что вычисление этих операций происходит строго в порядке слева направо. В качестве типичного примера, возьмем следующее выражение: varl = var2 + var3; Здесь операция + будет вступать в силу раньше, чем =. Однако бывают ситуации, когда приоритеты выполнения операций и не является столь очевидными, как, например, в следующем выражении: varl = var2 + var3 * var4; В этом выражении первой будет выполняться операция *, за ней - операция + и только потом - операция =. Такой порядок выполнения соответствует тому, который применяется в математике, и обеспечивает получение точно такого же результата, как и в случае выполнения аналогичного алгебраического подсчета вручную. Использование круглых скобок, как и в математике, позволяет управлять порядком выполнения операций; например, рассмотрим следующее выражение: varl = (var2 + var3) * var4; Здесь первым будет вычисляться содержимое, заключенное в круглые скобки, т.е. операция + будет выполняться перед операцией *. В табл. 3.10 показано, как выгладят приоритеты операций, которые уже встречались в этой главе, причем если приоритеты совпадают (как, например, у операций * и /), тогда операции вычисляются просто в порядке слева направо. Таблица 3.10. Приоритеты операций Приоритет Операции Высший ++, - (префиксные формы); +, - (унарная) + , - =, *=, /=, %=, +=. -= Низший ++, - (постфиксные формы) Для переопределения стандартных приоритетов можно пользоваться круглыми скобками, как уже рассказывалось выше. Кроме того, следует обратить внимание, что операции ++ и - в постфиксной форме имеют, как видно в таблице, низшие приоритеты только с концептуальной точки зрения. Они не выполняются над результатом, скажем, выражения присваивания, поэтому можно считать, что они обладают более высоким приоритетом, чем все остальные операции. Однако из-за того, что они меняют значение своего операнда после вычисления выражения, легче считать, что их приоритеты выглядят так, как указано в табл. 3.10. Пространства имен Прежде чем продолжить, не помешает рассмотреть еще одну важную тему, а именно- пространства имен (namespace). Они являются в .NET своего рода способом предоставления контейнеров для кода приложения, позволяющих идентифицировать этот код и его содержимое уникальным образом. Еще они применяются и в качестве средства категоризации элементов в .NET Framework. Большую часть этих элементов составляют определения типов, наподобие определений тех простых типов, которые демонстрировались в настоящей главе (System. Int32 и т.д.). Код на языке С# по умолчанию содержится в глобальном пространстве имен. Это означает, что к содержащимся в этом коде элементам можно получать доступ из любого другого находящегося в глобальном пространстве имен кода просто путем указания их имени. Можно использовать ключевое слово namespace и явным образом определять пространство имен для блока кода, заключаемого в фигурные скобки. Имена из такого пространства должны обязательно квалифицироваться в случае их применения в коде, находящемся за пределами этого пространства имен. Квалифицированное имя - это такое имя, в котором содержится вся иерархическая информация. По сути, это значит, что при наличии кода в одном пространстве имен и необходимости использовать в нем имя, определенное в другом пространстве имен, нужно обязательно включать вместе с именем и ссылку на другое пространство имен. Символ точки (.) в квалифицированных именах служит для обозначения различных имеющихся в пространстве имен уровней, например: namespace LevelOne { код в пространстве имен LevelOne определение имени NameOne код в глобальном пространстве имен В этом коде определяется одно пространство имен - LevelOne - и одно имя в этом пространстве имен - NameOne (сам код не приводится для придания описанию общего характера, но зато приводится комментарий на том месте, где должно находиться определение). В коде, добавляемом внутри пространства имен LevelOne, на это имя можно ссылаться с использованием NameOne, т.е. квалифицировать его не обязательно. В коде, добавляемом внутри глобального пространства имен, однако, на него обязательно нужно ссылаться с помощью квалифицированного имени LevelOne .NameOne. Внутри любого пространства имен с использованием ключевого слова namespace можно определять и другие пространства имен, называемые в таком случае вложенными пространствами имен. Ссылаться на вложенные пространства имен нужно с применением информации об их иерархии и отделения каждого уровня иерархии символом точки. Лучше всего будет показать это на примере. Возьмем следующий код: namespace LevelOne { код в пространстве имен LevelOne namespace LevelTwo код в пространстве имен LevelOne.LevelTwo определение имени NameTwo код в глобальном пространстве имен Здесь на имя NameTwo нужно ссылаться в глобальном пространстве имен как LevelOne.LevelTwo.NameTwo, в пространстве имен LevelOne - LevelTwo.NameTwo, а в пространстве имен LevelOne. LevelTwo - NameTwo. Главным тут является то, что пространства имен идентифицируют определяемые в них имена уникальным образом. Например, имя NameThree можно определить и в пространстве имен LevelOne и в пространстве имен LevelTwo: namespace LevelOne { определение имени NameThree namespace LevelTwo определение имени NameThree Это приведет к получению двух отдельных имен LevelOne .NameThree и LevelOne. LevelTwo .NameThree, которые можно будет использовать совершенно независимо друг от друга.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |