Страница 24 из 502
Помимо описанной выше формы строкового литерала, можно также указать буквальный строковый литерал. Такой литерал начинается с символа @, после которого следует строка в кавычках. Содержимое строки в кавычках воспринимается без изменений и может быть расширено до двух и более строк. Это означает, что в буквальный строковый литерал можно включить символы новой строки, табуляции и прочие, не прибегая к управляющим последовательностям. Единственное исключение составляют двойные кавычки ("), для указания которых необходимо использовать две двойные кавычки подряд (" "). В приведенном ниже примере программы демонстрируется применение буквальных строковых литералов.
<b>// Продемонстрировать применение буквальных строковых литералов,</b>
<b>using System;</b>
<b>class Verbatim { </b>
<b>static void Main() {</b>
<b> Console.WriteLine(@"Это буквальный </b>
<b>строковый литерал, </b>
<b>занимающий несколько строк.</b>
<b>") ;</b>
<b> Console.WriteLine(@"А это вывод с табуляцией:</b>
<b>1 2 3 4</b>
<b>5 6 7 8</b>
<b>");</b>
<b> Console.WriteLine(@"Отзыв программиста: ""Мне нравится С#.""");</b>
<b> }</b>
<b>}</b>
Результат выполнения этой программы приведен ниже.
<b>Это буквальный </b>
<b>строковый литерал, </b>
<b>занимающий несколько строк.</b>
<b>А это вывод с-табуляцией:</b>
<b>1 2 3 4</b>
<b>5 6 7 8</b>
<b>Отзыв программиста: "Мне нравится С#."</b>
Следует особо подчеркнуть, что буквальные строковые литералы выводятся в том же виде, в каком они введены в исходном тексте программы.
Преимущество буквальных строковых литералов заключается в том, что они позволяют указать в программе выводимый результат именно так, как он должен выглядеть на экране. Но если выводится несколько строк, то переход на новую строку может нарушить порядок набора исходного текста программы с отступами. Именно по этой причине в примерах программ, приведенных в этой книге, применение буквальных строковых литералов ограничено. Тем не менее они приносят немало замечательных выгод во многих случаях, когда требуется форматирование выводимых результатов.
И последнее замечание: не путайте строки с символами. Символьный литерал, например 'X', обозначает одиночную букву типа char. А строка, состоящая из одного символа, например "X", по-прежнему остается текстовой строкой.
Более подробное рассмотрение переменных
Переменные объявляются с помощью оператора следующей формы:
<b>тип имя_переменной;</b>
где тип — это тип данных, хранящихся в переменной; а имя_переменной — это ее имя. Объявить можно переменную любого действительного типа, в том числе и описанных выше типов значений. Важно подчеркнуть, что возможности переменной определяются ее типом. Например, переменную типа bool нельзя использовать для хранения числовых значений с плавающей точкой. Кроме того, тип переменной нельзя изменять в течение срока ее существования. В частности, переменную типа int нельзя преобразовать в переменную типа char.
Все переменные в C# должны быть объявлены до их применения. Это нужно для того, чтобы уведомить компилятор о типе данных, хранящихся в переменной, прежде чем он попытается правильно скомпилировать любой оператор, в котором используется переменная. Это позволяет также осуществлять строгий контроль типов в С#.
В C# определено несколько различных видов переменных. Так, в предыдущих примерах программ использовались переменные, называемые локальными, поскольку они объявляются внутри метода.
Задать значение переменной можно, в частности, с помощью оператора присваивания, как было не раз продемонстрировано ранее. Кроме того, задать начальное значение переменной можно при ее объявлении. Для этого после имени переменной указывается знак равенства (=) и присваиваемое значение. Ниже приведена общая форма инициализации переменной:
<b>тип имя_переменной = значение;</b>
где значение — это конкретное значение, задаваемое при создании переменной. Оно должно соответствовать указанному типу переменной.
Ниже приведены некоторые примеры инициализации переменных.
<b>int count = 10; // задать начальное значение 10 переменной count.</b>
<b>char ch = 'X'; // инициализировать переменную ch буквенным значением X.</b>
<b>float f = 1.2F // переменная f инициализируется числовым значением 1,2.</b>
Если две или более переменные одного и того же типа объявляются списком, разделяемым запятыми, то этим переменным можно задать, например, начальное значение.
int a, b=8, с=19, d; // инициализировать переменные b и с
В данном примере инициализируются только переменные b и с.
В приведенных выше примерах в качестве инициализаторов переменных использовались только константы, но в C# допускается также динамическая инициализация переменных с помощью любого выражения, действительного на момент объявления переменной. Ниже приведен пример краткой программы для вычисления гипотенузы прямоугольного треугольника по длине его противоположных сторон.
<b>// Продемонстрировать динамическую инициализацию.</b>
<b>using System;</b>
<b>class Dynlnit {</b>
<b> static void Main() {</b>
<b> // Длина сторон прямоугольного треугольника. </b>
<b> double s1 = 4.0; </b>