Г. Шилдт - Полный справочник по C# (1160789), страница 11
Текст из файла (страница 11)
Наоборот, благодаря способности блоков кодаупрощать программирование алгоритмов, повышается скорость и эффективность выполнения программ в целом.Использование точки с запятой и оформлениетекста программыВ С# точка с запятой означает конец инструкции, т.е. каждая отдельная инструкция должна оканчиваться точкой с запятой.Как вы уже знаете, блок — это набор логически связанных инструкций, заключенный между открывающей и закрывающей фигурными скобками. Поскольку каждая изинструкций блока завершается точкой с запятой, то признаком завершения самогоблока является закрывающая фигурная скобка (а не точка с запятой).С# не распознает конец строки как конец инструкции; признаком конца инструкции служит только точка с запятой, поэтому расположение инструкции в строке неимеет значения.
Например, в С# следующий фрагмент кодах = у;у = у + 1;Console.WriteLine(x|+ "" + у);абсолютно идентичен представленному в виде одной строке.I х = у;у = у + 1; Console.WriteLine(x + " " + у ) ;Более того, различные элементы инструкции можно расположить на отдельныхстроках. Например, следующая запись инструкции абсолютно приемлема.Console.WriteLine("Это длинная текстовая строка" +х + у + z +"другие данные, подлежащие выводу");IПодобное разбиение длинных программных строк часто позволяет сделать программу более читабельной.Использование отступовГлядя на текст предыдущих программ, вы, вероятно, заметили, что некоторые инструкции записаны с отступами от левого края.
С# — это язык, допускающий свободную формузаписи инструкций, т.е. не имеет значения, как расположены инструкции на строке относительно друг друга. Однако у программистов выработался определенный стиль оформления программ, который позволяет сделать программу максимально читабельной.
Программы, представленные в этой книге, оформлены с соблюдением этого стиля, что рекомендуется делать и вам. Согласно этому стилю, после каждой открывающей фигурнойскобки следует делать отступ (в виде нескольких пробелов), а после каждой закрывающейфигурной скобки — возвращаться назад (к предыдущему уровню отступа). Для некоторыхинструкций рекомендуется делать дополнительный отступ, но об этом речь впереди.50Часть I.
Язык С#Ключевые слова С#В языке С# на данный момент определено 77 ключевых слов, которые перечислены в табл. 2.1. Эти ключевые слова (в сочетании с синтаксисом операторов и разделителей) образуют определение языка С#. Ключевые слова нельзя использовать в качестве имен переменных, классов или методов.Таблица 2.1. Ключевые слова С #abstracteventnewasexplicitnullswitchbaseexternobjectthisstructboolfalseoperatorthrowbreakfinallyouttruebytefixedoverridetrycasefloatparamstypeofcatchforprivateuintcharforeachprotectedulongcheckedgotopublicuncheckedclassifreadonlyunsafeconstimplicitrefushortcontinueinreturnusingdecimalintsbytevirtualdefaultinterfacesealedvolatiledelegateinternalshortvoiddoissizeofwhiledoublelockstackallocelselongstaticenumnamespacestringИдентификаторыВ С# идентификатор представляет собой имя, присвоенное методу, переменнойили иному элементу, определенному пользователем. Идентификаторы могут состоятьиз одного или нескольких символов.
Имена переменных должны начинаться с буквыили символа подчеркивания. Последующим символом может быть буква, цифра исимвол подчеркивания. Символ подчеркивания можно использовать для улучшениячитабельности имени переменной, например l i n e _ c o u n t . В С# прописные и строчные буквы воспринимаются как различные символы, т.е. myvar и MyVar — это разные имена. Вот несколько примеров допустимых идентификаторов.Testху2MaxLoadup_topmy_varsainple23Помните, что идентификатор не должен начинаться с цифры.
Например, 12х —недопустимый идентификатор. Конечно, вы вольны называть переменные и другиепрограммные элементы по своему усмотрению, но обычно идентификатор отражаетназначение или смысловую характеристику элемента, которому он принадлежит.Глава 2. Обзор элементов языка С#51Несмотря на то что в С# нельзя использовать ключевые слова в качестве идентификаторов, любое ключевое слово можно "превратить" в допустимый идентификатор,предварив его символом "@". Например, идентификатор @for вполне пригоден дляупотребления в качестве допустимого С#-имени.
Интересно, что в этом случае идентификатором все-таки является слово for, а символ @ попросту игнорируется. Теперьсамое время рассмотреть программу, в которой используется @ -идентификатор.//Демонстрируем использование@-идентификатора.using System;c l a s s IdTest {s t a t i c void Main() {i n t @if;/ / Используем ifв качестве идентификатора.for(@if = 0; @if < 10; @if++)Console.WriteLine("@if равно " + 0 i f ) ;Результат выполнения этой программы доказывает, что @if действительно интерпретируется как идентификатор.@if@if@if@if@if@if@if@if@if@ifравноравноравноравноравноравноравноравноравноравно012345б789Однако (за исключением специальных случаев) использование ключевых слов вкачестве ©-идентификаторов не рекомендуется.
Кроме того, символ @ может стоять вначале любого идентификатора (а не только созданного из ключевого слова), но этотакже не считается хорошим стилем программирования.-J Библиотеки классов С#В примерах программ, представленных в этой главе, использовано два встроенныхС#-метода — WriteLine () и Write (). Как упоминалось выше, эти методы — членыкласса Console, который является частью пространства имен System, определенногов библиотеках классов среды .NET Framework. Вы уже знаете, что С#-среда опираетсяна библиотеки классов среды .NET Framework, что позволяет ей обеспечить поддержку операций ввода-вывода, обработку строк, сетевые возможности и графические интерфейсы пользователя (GUIs).
Таким образом, С# в целом — это объединение самого языка С# (его языковых элементов) и классов .NET-стандарта. Как будет показано ниже, библиотеки классов существенно повышают функциональность С#программы. Чтобы стать профессиональным С#-программистом, важно научитьсяэффективно использовать эти стандартные классы. В части I мы познакомимся с элементами библиотечных классов .NET-стандарта, а детали .NET-библиотеки описаны вчасти II.52Часть I.
Язык С#Полныйсправочник поТипы данных, литералыи переменныеВэтой главе рассматриваются три основных элемента языка С#: типы данных,литералы и переменные. В общем случае типы данных определяют класс задач,к которым они могут быть применены. В С# предусмотрен богатый набор встроенныхтипов данных, что позволяет использовать этот язык для широкого диапазона приложений. Программист может создавать переменные нужного ему типа и определятьконстанты, которые в языке С# называются литералами.О важности типов данныхТипы данных имеют в С# особое значение, поскольку С# — строго типизированный язык.
Это значит, что все операции проверяются компилятором на соответствиетипов. Некорректные операции не компилируются. Таким образом, контроль типовспособствует предотвращению ошибок и повышает надежность программ. Для обеспечения контроля типов необходимо, чтобы все переменные, выражения и значенияимели определенный тип. Например, в языке не допускается, чтобы переменная неимела типа.
Более того, тип значения определяет, какие операции разрешено выполнять с таким значением. Операция, разрешенная для одного типа, может быть недопустимой для другого.Типы значений в С#С# содержит две категории встроенных типов данных: типы значений и ссылочныетипы. Ссылочные типы определяются в классах, но о классах речь еще впереди. Ядроязыка С# составляют 13 типов, перечисленных в табл. 3.1. Это — встроенные типы,которые определяются ключевыми словами С# и доступны для использования в любой Сопрограмме.Термин "тип значения" применяется к переменным, которые непосредственно содержат значения.
(Для сравнения: переменные ссылочных типов содержат ссылки нареальные значения.) Таким образом, типы значений в С# во многом подобны типамданных, определенным в других языках программирования (например, C++). Типызначений также называют простыми типами.В С# строго определяется диапазон и поведение каждого типа значения. Исходя изтребований переносимости, С# на этот счет не допускает никаких компромиссов. Например, тип i n t должен быть одинаковым во всех средах выполнения. Поэтому припереходе на другую платформу не должна возникать необходимость переделки кода.Несмотря на то что строгое задание размерных характеристик типов значений можетвызвать в некоторых средах небольшие потери производительности, ради достиженияпереносимости с ними необходимо смириться.Таблица 3.1. Типы значений в С#Ключевое словоТИПboolЛогический, или булев, представляет значения ИСТИНА/ЛОЖЬbyte8-разрядный целочисленный без знакаcharСимвольныйdecimalЧисловой тип для финансовых вычисленийdoubleС плавающей точкой двойной точности54Часть I, Язык С#Окончание табл.
3.1Ключевое слово ТипfloatС плавающей точкойintЦелочисленныйlongТип для представления длинного целого числаsbyte8-разрядный целочисленный со знакомshortТип для представления короткого целого числаuintЦелочисленный без знакаulongТип для представления длинного целого числа без знакаushortТип для представления короткого целого числа без знакаЦелочисленные типыВ С# определено девять целочисленных типов: char, byte, sbyte, s h o r t , u s h o r t ,int, u i n t , long и ulong.
Однако тип char в основном используется для представлениясимволов (подробнее рассматривается ниже в этой главе). Остальные восемь целочисленных типов предназначены для числовой обработки данных. Размер значений в битахи диапазоны представления для каждого из этих восьми типов приведены в табл. 3.2.Таблица 3.2. Характеристики целочисленных типовТипРазмер в битахbytesbyte88161632326464shortushortintuintlongulongДиапазон0-255-128—127-32 768-32 7670-65 535-2 147 483 648-2147 483 6470-4 294 967 295-9 223 372 036 854 775 808-9 223 372 036 854 775 8070-18 446 744 073 709 551615Согласно этой таблице, в С# определены обе версии всех целочисленных типов:как со знаком, так и без него. Различие между этими версиями заключается в способеинтерпретации старшего разряда. Если в программе задано целочисленное значениесо знаком, то компилятор сгенерирует код, в котором предусматривается, что старшийразряд такого значения используется в качестве флага знака (sign flag).
Если флаг знака равен нулю, значит, число положительно, если он равен 1, то число отрицательно.Отрицательные числа почти всегда представляются в виде дополнения до двух. Дляполучения дополнительного кода сначала все разряды числа, за исключением знакового, инвертируются, а затем результат инвертирования суммируется с единицей. Наконец, флаг знака устанавливается равным единице.Целочисленные значения со знаком широко используются во многих алгоритмах,но следует понимать, что по абсолютному значению (по модулю) они составляюттолько половину от своих "родственников" со знаком. Например, вот как выглядит вдвоичном коде число 32 767 в качестве значения типа s h o r t :01111111 11111111Глава 3.