×
Traktatov.net » C# 4.0: полное руководство » Читать онлайн
Страница 40 из 650 Настройки

Все переменные в C# должны быть объявлены до их применения. Это нужно для того, чтобы уведомить компилятор о типе данных, хранящихся в переменной, прежде чем он попытается правильно скомпилировать любой оператор, в котором используется переменная. Это позволяет также осуществлять строгий контроль типов в С#.

В C# определено несколько различных видов переменных. Так, в предыдущих примерах программ использовались переменные, называемые локальными, поскольку они объявляются внутри метода.


Инициализация переменной

Задать значение переменной можно, в частности, с помощью оператора присваивания, как было не раз продемонстрировано ранее. Кроме того, задать начальное значение переменной можно при ее объявлении. Для этого после имени переменной указывается знак равенства (=) и присваиваемое значение. Ниже приведена общая форма инициализации переменной:


>тип имя_переменной = значение;


где значение — это конкретное значение, задаваемое при создании переменной. Оно должно соответствовать указанному типу переменной.

Ниже приведены некоторые примеры инициализации переменных.


>int count = 10; //    задать начальное значение 10 переменной count.

>char ch = 'X';  // инициализировать переменную ch буквенным значением X.

>float f = 1.2F  //    переменная    f    инициализируется    числовым    значением 1,2.


Если две или более переменные одного и того же типа объявляются списком, разделяемым запятыми, то этим переменным можно задать, например, начальное значение.


int a, b=8, с=19, d; // инициализировать переменные b и с


В данном примере инициализируются только переменные b и с.


Динамическая инициализация

В приведенных выше примерах в качестве инициализаторов переменных использовались только константы, но в C# допускается также динамическая инициализация переменных с помощью любого выражения, действительного на момент объявления переменной. Ниже приведен пример краткой программы для вычисления гипотенузы прямоугольного треугольника по длине его противоположных сторон.


>// Продемонстрировать динамическую инициализацию.

>using System;

>class Dynlnit {

>  static void Main() {

>    // Длина сторон прямоугольного треугольника.

>    double s1 = 4.0;

>    double s2 = 5.0;

>    // Инициализировать переменную hypot динамически,

>    double hypot = Math.Sqrt( (s1 * s1) + (s2 * s2) );

>    Console.Write("Гипотенуза треугольника со сторонами "

>             + s1 + " и " + s2 + " равна ");

>    Console.WriteLine("{0:#.###}.", hypot);

>  }

>}


Результат выполнения этой программы выглядит следующим образом.


>Гипотенуза треугольника со сторонами 4 и 5 равна 6.403


В данном примере объявляются три локальные переменные: s1, s2 и hypot. Две из них (s1 и s2) инициализируются константами, А третья (hypot) динамически инициализируется вычисляемой длиной гипотенузы. Для такой инициализации используется выражение, указываемое в вызываемом методе Math.Sqrt(). Как пояснялось выше, для динамической инициализации пригодно любое выражение, действительное на момент объявления переменной. А поскольку вызов метода Math.Sqrt() (или любого другого библиотечного метода) является действительным на данный момент, то его можно использовать для инициализации переменной hypot. Следует особо подчеркнуть, что в выражении для инициализации можно использовать любой элемент, действительный на момент самой инициализации переменной, в том числе вызовы методов, другие переменные или литералы.