Как пояснялось выше, все переменные в C# должны быть объявлены. Как правило, при объявлении переменной сначала указывается тип, например int или bool, а затем имя переменной. Но начиная с версии C# 3.0, компилятору предоставляется возможность самому определить тип локальной переменной, исходя из значения, которым она инициализируется. Такая переменная называетсянеявно типизированной.

Неявно типизированная переменная объявляется с помощью ключевого слова var и должна быть непременно инициализирована. Для определения типа этой переменной компилятору служит тип ее инициализатора, т.е. значения, которым она инициализируется. Рассмотрим такой пример.

var е = 2.7183;

В данном примере переменная е инициализируется литералом с плавающей точкой, который по умолчанию имеет тип double, и поэтому она относится к типу double. Если бы переменная е была объявлена следующим образом:

var е = 2.7183F;

то она была бы отнесена к типу float.

В приведенном ниже примере программы демонстрируется применение неявно типизированных переменных. Он представляет собой вариант программы из предыдущего раздела, измененной таким образом, чтобы все переменные были типизированы неявно.

// Продемонстрировать применение неявно типизированных переменных, using System;

class ImplicitlyTypedVar { static void Main {

// Эти переменные типизированы неявно. Они отнесены // к типу double, поскольку инициализирующие их // выражения сами относятся к типу double, var si = 4.0; var s2 = 5.0;

// Итак, переменная hypot типизирована неявно и // относится к типу double, поскольку результат,

// возвращаемый методом Sqrt, имеет тип double, var hypot = Math.Sqrt( (si * si) + (s2 * s2)    );

Console.Write("Гипотенуза треугольника со сторонами " + si + " by " + s2 + " равна ");

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

// Следующий оператор не может быть скомпилирован,

// поскольку переменная si имеет тип double и // ей нельзя присвоить десятичное значение.

// si = 12.2М; // Ошибка!

}

}

Результат выполнения этой программы оказывается таким же, как и прежде. Важно подчеркнуть, что неявно типизированная переменная по-прежнему остается строго типизированной. Обратите внимание на следующую закомментированную строку из приведенной выше программы.

// si = 12.2М; // Ошибка!

Перейти на страницу:

Похожие книги