logo
[ТП]Lektsii / Лекция 2 Полиморфизм и виртуальные методы

Процедуры и функции. Отличия

Функция отличается от процедуры двумя особенностями:

  1. • всегда вычисляет некоторое значение, возвращаемое в качестве результата функции;

  2. • вызывается в выражениях.

Процедура C# имеет свои особенности:

  1. • возвращает формальный результат void, указывающий на отсутствие результата;

  2. • вызов процедуры является оператором языка;

  3. • имеет входные и выходные аргументы, причем выходных аргументов - ее результатов - может быть достаточно много.

Хорошо известно, что одновременное существование в языке процедур и функций в каком-то смысле избыточно. Добавив еще один выходной аргумент, любую функцию можно записать в виде процедуры. Справедливо и обратное. Если допускать функции с побочным эффектом, то любую процедуру можно записать в виде функции. В языке С - дедушке C# - так и сделали, оставив только функции. Однако значительно удобнее иметь обе формы реализации метода: и процедуры, и функции. Обычно метод предпочитают реализовать в виде функции тогда, когда он имеет один выходной аргумент, рассматриваемый как результат вычисления значения функции. Возможность вызова функций в выражениях также влияет на выбор в пользу реализации метода в виде функции. В других случаях метод реализуют в виде процедуры.