Полное руководство. С# 4.0
Шрифт:
Если в данном примере кода значение переменной w меньше значения перемен ной h, то оба оператора выполняются в кодовом блоке. Они образуют внутри кодового блока единый логический элемент, причем один не может выполняться без другого. Таким образом, если требуется логически связать два (или более) оператора, то для этой цели следует создать кодовый блок. С помощью кодовых блоков можно более эффективно и ясно реализовать многие алгоритмы.
Ниже приведен пример программы, в которой кодовый блок служит для того, что бы исключить деление на нуль. // Продемонстрировать применение кодового блока. using System; class BlockDemo { static void Main { int i, j, d; i = 5 ; j = 10; // Адресатом этого оператора if служит кодовый блок. if(i != 0) { Console.WriteLine("i
Вот к какому результату приводит выполнение данной программы. i не равно нулю j / i равно 2
В данном примере адресатом оператора if служит кодовый блок, а не единствен ный оператор. Если условие, управляющее оператором if, оказывается истинным, то выполняются три оператора в кодовом блоке. Попробуйте задать нулевое значение переменной i, чтобы посмотреть, что из этого получится.
Рассмотрим еще один пример, где кодовый блок служит для вычисления суммы и произведения чисел от 1 до 10. // Вычислить сумму и произведение чисел от 1 до 10. using System; class ProdSum { static void Main { int prod; int sum; int i; sum = 0; prod = 1; for(i=1; i <= 10; i++) { sum = sum + i; prod = prod * i; } Console.WriteLine("Сумма равна " + sum); Console.WriteLine("Произведение равно " + prod); } }
Ниже приведен результат выполнения данной программы. Сумма равна 55 Произведение равно 3628800
В данном примере внутри кодового блока организуется цикл для вычисления сум мы и произведения. В отсутствие такого блока для достижения того же самого резуль тата пришлось бы организовать два отдельных цикла.
И последнее: кодовые блоки не снижают эффективность программ во время их вы полнения. Иными словами, наличие символов { и }, обозначающих кодовый блок, никоим образом не замедляет выполнение программы. В действительности приме нение кодовых блоков, как правило, приводит к повышению быстродействия и эф фективности программ, поскольку они упрощают программирование определенных алгоритмов. Точка с запятой и оформление исходного текста программы
В C# точка с запятой обозначает конец оператора. Это означает, что каждый опера тор в отдельности должен оканчиваться точкой с запятой.
Как вы уже знаете, кодовый блок представляет собой набор логически связанных операторов, заключенных в фигурные скобки. Блок не оканчивается точкой с запятой, поскольку он состоит из группы операторов. Вместо этого окончание кодового блока обозначается закрывающей фигурной скобкой.
В С# конец строки не означает конец оператора — о его окончании свидетельствует только точка с запятой. Именно поэтому оператор можно поместить в любой части строки. Например, на языке C# строки кода х = у; у = у + 1; Console.WriteLine(х + " " + у);
означают то же самое, что и строка кода х = у; у = у + 1; Consо1е.WriteLine(х + " " + у);
Более того, составные элементы оператора можно располагать в отдельных строках. Например, следующий фрагмент кода считается в C# вполне допустимым. Console.WriteLine("Это длинная строка вывода" + х + у + z + "дополнительный вывод");
Такое разбиение длинных строк нередко применяется для того, чтобы сделать ис ходный текст программы более удобным для чтения. Оно помогает также исключить заворачивание слишком длинных строк.
Возможно, вы уже обратили внимание на то, что в предыдущих примерах про грамм некоторые операторы были набраны с отступом. В C# допускается свободная форма записи. Это означает, что взаимное расположение операторов в строке не имеет особого значения. Но с годами в программировании сложился общепринятый стиль оформления исходного текста программ с отступами, что существенно облегчает чтение этого текста. Именно этому стилю следуют примеры программ в данной книге, что рекомендуется делать и вам. В соответствии с этим стилем следует делать отступ (в виде нескольких пробелов) после каждой открывающей фигурной скобки и возвра щаться назад после закрывающей фигурной скобки. А для некоторых операторов даже требуется дополнительный отступ, но об этом речь пойдет далее. Ключевые слова C
Основу любого языка программирования составляют его ключевые слова, посколь ку они определяют средства, встроенные в этот язык. В C# определены два общих типа ключевых слов: зарезервированные и контекстные. Зарезервированные ключевые слова нельзя использовать в именах переменных, классов или методов. Их можно использо вать только в качестве ключевых слов. Именно поэтому они и называются зарезервиро ванными. Их иногда еще называют зарезервированными словами, или зарезервированными идентификаторами. В настоящее время в версии 4.0 языка С# определено 77 зарезерви рованных ключевых слов (табл. 2.1).
Таблица 2.1. Ключевые слова, зарезервированные в языке C# abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while
Кроме того, в версии C# 4.0 определены 18 контекстных ключевых слов, которые приобретают особое значение в определенном контексте. В таком контексте они вы полняют роль ключевых слов, а вне его они могут использоваться в именах других элементов программы, например в именах переменных. Следовательно, контекстные ключевые слова формально не являются зарезервированными. Но, как правило, их сле дует считать зарезервированными, избегая их применения в любых других целях. Ведь применение контекстного ключевого слова в качестве имени какого-нибудь другого элемента программы может привести к путанице, и поэтому считается многими про граммистами плохой практикой. Контекстные ключевые слова приведены в табл. 2.2. Таблица 2.2. Контекстные ключевые слова в C# add dynamic from get global group into join let orderby partial remove select set value var where yield Идентификаторы
В C# идентификатор представляет собой имя, присваиваемое методу, переменной или любому другому определяемому пользователем элементу программы. Идентифи каторы могут состоять из одного или нескольких символов. Имена переменных могут начинаться с любой буквы алфавита или знака подчеркивания. Далее может следовать буква, цифра или знак подчеркивания. С помощью знака подчеркивания можно по высить удобочитаемость имени переменной, как, например, line_count. Но иден тификаторы, содержащие два знака подчеркивания подряд, например, max__value, зарезервированы для применения в компиляторе. Прописные и строчные буквы в C# различаются. Так, например myvar и MyVar — это разные имена переменных. Ниже приведены некоторые примеры допустимых идентификаторов. Test x У2 MaxLoad up _top my_var sample23 Помните, что идентификатор не может начинаться с цифры. Например, 12х — недей ствительный идентификатор. Хорошая практика программирования требует выбирать идентификаторы, отражающие назначение или применение именуемых элементов. Несмотря на то что зарезервированные ключевые слова нельзя использовать в ка честве идентификаторов, в C# разрешается применять ключевое слово с предшествую щим знаком @ в качестве допустимого идентификатора. Например, @for — действи тельный идентификатор. В этом случае в качестве идентификатора фактически служит ключевое слово for, а знак @ просто игнорируется. Ниже приведен пример програм мы, демонстрирующей применение идентификатора со знаком @. // Продемонстрировать применение идентификатора со знаком @. using System; class IdTest { static void Main { int @if; // применение ключевого слова if // в качестве идентификатора for(@if = 0; @if < 10; @if++) Console.WriteLine("@if равно " + @if); } }