Суббота, 27.04.2024, 01:45
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 10 » Операторы присваивания
23:59
Операторы присваивания
Операторы присваивания
До настоящего момента мы пользовались простым оператором присваивания = ,
и кому-то может показаться удивительным, что существуют какие-либо другие
операторы присваивания. Однако они действительно существуют и, что кажется
еще более удивительным, оказываются весьма полезными!
Все другие операторы присваивания работают схожим с оператором = обра-
зом. Так же, как и у оператора =, результат их выполнения — присваивание рас-
положенной слева переменной значения, вычисленного посредством операторов
и операндов, расположенных в правой части.
Представим эти операторы и объяснение их работы в табличной форме:
Оператор Значение Пример использования Результат
в выражении
Бинарное
+= Бинарное
-= Бинарное
*= Бинарное
/= Бинарное
%= Бинарное
varl = var2;
varl += var2;
varl -= var2;
varl *= var2;
varl /•« var2;
varl %= var2;
Переменной varl присваивается значение
переменной var2
Переменной varl присваивается значение,
которое представляет собой сумму
переменных varl и var2
Переменной varl присваивается значение,
которое представляет собой разность,
полученную в результате вычитания
переменной var2 из переменной varl
Переменной varl присваивается значение,
которое представляет собой произведение
переменных varl и var2
Переменной varl присваивается значение,
полученное в результате деления
переменной varl на переменную var2
Переменной varl присваивается значение,
являющееся остатком от деления
переменной varl на переменную var2
Как вы могли заметить, результатом использования дополнительных операто-
ров присваивания является вовлечение переменной varl в вычисления, т. е. код
вроде:
приводит к получению точно такого же результата, что и код:
varl = varl + var2;
Переменные и выражения 41
Обратите внимание, что оператор += может использоваться
и со строками, так же, как и оператор +.
Использование этих операторов, особенно при работе с длинными именами пе-
ременных, позволяет сделать программу намного более удобочитаемой.
Старшинство операторов
При вычислении выражения все операторы выполняются в определенной по-
следовательности. Это не означает, что они всегда выполняются слева направо.
В качестве самого простого примера рассмотрим следующий оператор:
Здесь оператор + выполняется перед оператором =.
Существуют и другие ситуации, когда старшинство операторов не совсем оче-
видно, например:
varl = var2 + var3 * var4;
В этом выражении сначала будет выполнен оператор *, затем оператор + и по-
следним — оператор = . Это принятый в математике стандартный порядок выпол-
нения операций, он приведет к получению того же самого результата, который
можно ожидать при выполнении аналогичных арифметических вычислений на бу-
маге.
Мы также можем управлять порядком выполнения операторов с помощью ско-
бок, например:
varl = (var2 + var3) * var4;
В данном случае в первую очередь будет выполняться то, что содержится
в скобках, то есть оператор + будет выполнен перед оператором *.
Для всех рассматриваемых операторов порядок выполнения показан ниже;
при этом операторы с одинаковым старшинством (такие как * и /) выполняются
в порядке своего следования слева направо:
Старшинство Операторы
Высшее ++, -- (используемые в качестве префиксов); +, - (унарные)
*. Л %
+. -
=, * = , / = , % = , + = , - =
Низшее . ++, -- (используемые в качестве суффиксов)
Для изменения порядка выполнения операторов
используются скобки, как говорилось выше.
Пространства имен
Прежде чем мы двинемся дальше, представляется целесообразным потратить
некоторое время на еще один важный аспект — пространства имен. Это способ,
используемый в .NET, который позволяет создавать контейнеры для кода прило-
жений, чтобы и код, и его составные части были однозначно идентифицированы.
42 Глава 3
Пространства имен используются также в качестве средства категоризации объек-
тов в .NET Framework. Большинство таких объектов представляют собой опреде-
ления типов, например, определения простых типов, которые подробно рассматри-
ваются в данной главе (system.mt32 и т. д.).
Код С# по умолчанию содержится в глобальном пространстве имен. Это озна-
чает, что к объектам в коде С# можно обратиться из любого другого кода в гло-
бальном пространстве имен просто по их имени. Можно воспользоваться ключевым
словом namespace для того, чтобы явно задать пространство имен для любого
блока кода, заключенного в фигурные скобки. Имена, находящиеся в таком про-
странстве имен, если к ним обращаются не из данного пространства имен, должны
квалифицироваться.
Квалифицированным именем называется имя, в котором содержится вся ин-
формация касательно его иерархии. Это означает, что если у нас имеется код,
находящийся в одном пространстве имен, и необходимо воспользоваться именем,
определенным в другом пространстве имен, то нам следует использовать ссылку на
это пространство имен. В квалифицированных именах для разделения уровней
пространств имен используется символ точки.
Например:
namespace LevelOne
{ . ' ;.::':;хГх;;
/ / программа, находящаяся в пространстве имен LevelOne
•// в ней описывается имя "NameOneV
/1 программа, находящаяся в глобальном пространстве имен
В этой программе описывается единственное пространство имен — LevelOne.
(Обратите внимание, что в данном случае в программе не содержится никакого ис-
полняемого кода. Это сделано для того, чтобы придать обсуждению максимально
общий характер; напротив, в код помещен комментарий, в котором содержится это
описание.) Код, содержащийся внутри пространства имен LevelOne, может просто
ссылаться на имя NameOne, и никакой классификации не требуется. Однако в коде,
находящемся в глобальном пространстве имен, необходимо использовать класси-
фицированное ИМЯ LevelOne.NameOne ДЛЯ ТОГО, чтобы на него СОСЛатьСЯ.
Внутри любого пространства имен мы можем описывать вложенные простран-
ства имен, используя то же самое ключевое слово namespace. При обращение
к вложенным пространствам имен следует указывать всю их иерархию, отделяя
один уровень иерархии от другого с помощью точки. Это лучше всего проиллюст-
рировать с помощью примера. Рассмотрим следующие пространства имен:
namespace LevelOne
•: •',:. • ::: •:: • < -;:. ШШ\ ШШЖШШШУШШШШМУУ-. ШУУШУ • ., . :,; •
//программа, находящаяся в пространстве имен LevelOne
namespace LevelTwo
// программа, находящаяся в пространстве имен LevelOne.LevelTwo
: // в ней описывается имя "NameTwo"
> ' :' , "У У X '
•; ;^х:: •• • ШИШ<}'. ••;•>• Sy-ЩШ-уу- >Т'^УЛШ Л : : %гЖ±:; -Ш-, Т.-^-гУ'.. ШУ:УШМ^У^ УУ-УУУ---У-
//программа, находящаяся в глобальном пространстве имен
Переменные и выражения
В данном случае обращение к имени NameTwo из глобального пространства имен
ДОЛЖНО иметь ВИД LevelOne.LevelTwo.NameTwo, ИЗ Пространства Имен LevelOne —
LevelTwo.NameTwo, а ИЗ пространства имен LevelOne.LevelTwo — NameTwo.
Здесь нужно отметить, что имена идентифицируются пространствами имен
уникальным образом. Мы можем описать одно и то же имя •NameThree" как
В Пространстве имен LevelOne, так И В Пространстве имен LevelTwo:
namespace LevelOne
{
// здесь описывается имя "NameThree"
namespace LevelTwo
{
//здесь описывается имя "NameThree*
В данном случае описаны два разных имени, которые могут использоваться незави-
симо друг ОТ Друга — LevelOne.NameThree И LevelOne.LevelTwo.NameThree.
После того, как пространство имен определено, появляется возможность ис-
пользовать оператор using для упрощения доступа к содержащимся в нем именам.
Оператор using как бы говорит: "Да, нам действительно понадобится доступ
к именам из данного пространства имен, поэтому не заставляйте меня классифи-
цировать их каждый раз". Например, в следующей программе предполагается, что
код, находящийся в пространстве имен LevelOne, должен иметь доступ к именам
пространства имен LevelOne.LevelTwo без какой бы то ни было классификации:
namespace LevelOne
{
using LevelTwo;
namespace LevelTwo : . ••;
II здесь описывается имя "NameTwo*
Код, находящийся в пространстве имен LevelOne, теперь может обращаться
К Level Two. NameTwo ПрОСТО как К NameTwo.
Бывают случаи, как в примере с NameThree, когда такой подход может приво-
дить к конфликту между именами, находящимися в различных пространствах имен
(при этом код, скорее всего, компилироваться не будет). В подобных случаях мы
можем задать для пространства имен подставное имя (alias) в операторе using;
namespace LevelOne
{ .. , • \ ' '" . у.-;.-
using LT• = LevelTwo;
// здесь описывается имя "NameThree"
namespace LevelTwo
// здесь описывается имя "NameThree*
Тогда В Пространстве имен LevelOne М Ы СМОЖем обращаться К LevelOne.NameThree
просто как К NameThree, а К LevelOne.LevelTwo.NameThree как К LT.NameThree.
Итоги
Глава 3
Операторы using оказывают влияние на то пространство имен, в котором они
находятся, а также на все вложенные пространства имен, которые могут содер-
жаться в данном пространстве имен. В вышеприведенном коде в глобальном про-
странстве имен ИСПОЛЬЗОВать LT.NameThree нельзя. Однако еСЛИ оператор using
расположить следующим образом:
•Ifffl
// здесь описывается имя "NameThree"
namespace LevelTwo ,....:
//здесь описывается имя "NameThree*
; Щ ' V • ' ' ;- ШШШ^
Ш:'•<•••:• }^ ШШШ\ • U;• •;:••:: \ - 'Ш. •:: ::-:•:• Ш-Щ : -;:::? >• ;: :.) WiШ.?-;-'. -.: >• : •::: ' Ш Ш - то использовать имя *LT. NameThree• можно будет и из глобального пространства
Имен, И ИЗ пространства Имен LevelOne.
Существует еще один немаловажный момент, на который следует обратить
внимание. Оператор using сам по себе не обеспечивает доступа к именам, находя-
щимся в других пространствах имен. До тех пор, пока код из пространства имен не
будет каким-либо способом привязан к нашему проекту (например, описан в ис-
ходном файле проекта или описан в каком-либо коде), привязанному к этому про-
екту, мы не получим доступа к содержащимся в нем именам. Более того, если код,
в котором содержится некое пространство имен, привязан к нашему проекту, то
мы обладаем доступом к содержащимся в нем именам независимо от использова-
ния оператора using. Оператор using всего лишь упрощает обращение к этим
именам и позволяет сократить сильно удлиняющийся в противном случае код, де-
лая его более понятным.
Вернувшись к программе ConsoieAppiicationi, с которой мы работали в самом
начале данной главы, мы сможем обнаружить там следующие строки кода, относя-
щиеся к пространствам имен:
using System;
namespace ConsoieAppiicationi
В первой строке располагается оператор using, в котором объявляется, что
пространство имен System будет использоваться во всей программе С# и доступ
к нему из любых пространств имен данного файла должен осуществляться без ис-
пользования классификации. Пространство имен System является корневым про-
странством имен в .NET Framework и включает все основные функциональные
возможности, которые могут понадобиться для консольных приложений.
В следующей строке объявляется пространство имен для самого приложения
ConsoieAppiicationi.
В данной главе вы познакомились с основополагающей информацией, необхо-
димой для создания работающих приложений на С#. Были рассмотрены основы
синтаксиса С# и стандартный код консольного приложения, который генерируется
VS при создании проекта консольного приложения.
45
:TJ:zr вопросам и с — *—
их можно создавать, ^ п р и с в а и в а т ь 1 7 ™ " ^ П еРе М е н н ы е , каким образом
над ними и над теми значениямикотооые* * * * " * ВЫП°ЛНЯТЬ ^ п у л я ц и и
рассматривались основные аспекты в з Г — С о д е Р ™ - Параллельно с этим
и условны, ветвГГи"












Категория: информатика | Просмотров: 957 | Добавил: basic | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz