В приведенных выше примерах в качестве инициализаторов переменных использовались только константы, но в C# допускается также динамическая инициализация переменных с помощью любого выражения, действительного на момент объявления переменной. Ниже приведен пример краткой программы для вычисления гипотенузы прямоугольного треугольника по длине его противоположных сторон.
// Продемонстрировать динамическую инициализацию.
using System;
class DynInit {
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
. Следует особо подчеркнуть, что в выражении для инициализации можно использовать любой элемент, действительный на момент самой инициализации переменной, в том числе вызовы методов, другие переменные или литералы.
Инициализация переменной | Неявно типизированные переменные |