Побочные эффекты

Порядок вычисления выражений определяется конкретной реализацией, за исключением случаев, когда гарантируется определенный порядок оценки (язык, как описано в Приоритет и порядок вычисления).Например, побочные эффекты, возникающих в следующих вызовах функции:

add( i + 1, i = j + 2 );
myproc( getc(), getc() );

Аргументы вызова функции можно оценить в любом порядке.Выражение i + 1 может быть вычислено до i = j + 2или i = j + 2 может быть вычислено до i + 1.Результат отличается в каждом случае.Кроме того, невозможно гарантировать, какие символы, фактически переданные myproc.Для унарных операций увеличения и уменьшения включить назначения, такие операции может вызвать побочные эффекты, как показано в следующем примере:

x[i] = i++;

В этом примере значение x непрогнозируемо будет изменено.Значение индекса может быть либо новым или старым значением i.Результат может изменяться под другими компиляторами или различными уровнями оптимизации.

Поскольку язык c# не определяет порядок вычисления побочных эффектов, оба метода оценки обсуженного выше верны и может быть реализовано.Чтобы убедиться в том, что код, можно переносить и ясн избежать выписки, которые зависят от определенного порядка оценки побочных эффектов.

См. также

Основные понятия

Вычисление выражений (c#)