ВУЗ:
Составители:
Рубрика:
95
значения, и затраты могут быть значительными в сравнении с выбором
текущего значения поля.
6.3. Функции с побочным эффектом
Функция называется функцией с побочным эффектом, если помимо
результата, вычисляемого функцией и возвращаемого ей в операторе return, она
имеет выходные аргументы с ключевыми словами ref и out. Хороший стиль
объектно-ориентированного программирования не рекомендует использование
таких функций. Выражения, использующие функции с побочным эффектом,
могут потерять свойства, присущие им в математике. Если f(a) – функция с
побочным эффектом, то a + f(a) может быть не равно f(a) + a.
Примером такой функции является функция f, приведенная выше (см.
стр. 86). Вот тест, демонстрирующий потерю коммутативности сложения при
работе с этой функцией:
/// <summary>
/// тестирование побочного эффекта
/// </summary>
public void TestSideEffect()
{
int a = 0, b = 0, c = 0;
a = 1;
b = a + f(ref a);
a = 1;
c = f(ref a) + a;
Console.WriteLine("a={0}, b={1}, c={2}", a, b, c);
}
На рис. 20 показаны результаты работы этого метода.
Рисунок 20. Демонстрация вызова функции с побочным эффектом
Обратите внимание на полезность указания ключевого слова ref в момент
вызова. Его появление хоть как-то оправдывает некоммутативность сложения.
6.4. Методы и их перегрузка
Существование в классе методов с одним и тем же именем называется
перегрузкой, а сами одноименные методы называются перегруженными.
Перегрузка методов полезна, когда требуется решать подобные задачи с разным
набором аргументов. Типичный пример – это нахождение площади
треугольника. Площадь можно вычислить по трем сторонам, по двум углам и
Страницы
- « первая
- ‹ предыдущая
- …
- 89
- 90
- 91
- 92
- 93
- …
- следующая ›
- последняя »
