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