Материал предоставлен https://it.rfei.ru

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

В приведенных выше примерах в качестве инициализаторов переменных использовались только константы, но в 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. Следует особо подчеркнуть, что в выражении для инициализации можно использовать любой элемент, действительный на момент самой инициализации переменной, в том числе вызовы методов, другие переменные или литералы.

Инициализация переменнойНеявно типизированные переменные