Основы языка C# 2005. Евсеева О.Н - 62 стр.

UptoLike

Составители: 

66
4.3.1. Операции «увеличить» и «уменьшить» (increment, decrement)
Операции "увеличить на единицу" и "уменьшить на единицу" могут быть
префиксными и постфиксными. К высшему приоритету относятся постфиксные
операции x++ и x--. Префиксные операции имеют на единицу меньший
приоритет. Главной особенностью как префиксных, так и постфиксных
операций является побочный эффект, в результате которого значение x
увеличивается (++) или уменьшается (– –) на единицу. Для префиксных (++x, --x)
операций результатом их выполнения является измененное значение x,
постфиксные операции возвращают в качестве результата значение x до
изменения. Приведем пример применения этих операций, дополнив метод
Express новым фрагментом:
//операции increment и decrement
//Следующее выражение допустимо,но писать подобное никогда не следует
in1 = ++in1 + in1 + in1++;
//in1 = ++in1 + in1 + in1++;
Console.WriteLine(" in1= " + in1);
Обратите внимание, что хотя у постфиксной операции высший
приоритет, это вовсе не означает, что при вычислении выражения вначале
выполнится операция in1++, затем ++in1, и только потом будет проводиться
сложение. Ничего подобного, вычисления проводятся в том порядке, в котором
они записаны. Поскольку на входе значение in1 было равно 6, то выражение
будет вычисляться следующим образом: 7(7) + 7 + 7(8), где в скобках
записан побочный эффект операции. Так что консольный вывод даст
следующий результат: in1 = 21.
Операциями «увеличить» и «уменьшить» не следует злоупотреблять. Уже
оператор, приведенный в нашем фрагменте, сложен для понимания из-за
побочного эффекта.
4.3.2. Операции sizeof и typeof
Операция sizeof возвращает размер значимых типов, заданный в байтах.
Пояснения требуют некоторые особенности ее применения. Она должна
выполняться только в небезопасных блоках. Поэтому проект, в котором она
может использоваться, должен быть скомпилирован с включенным свойством
/unsafe. На рис. 17 показано, как на странице свойств проекта можно включить
это свойство.
Далее необходимо создать небезопасный блок, например, метод класса,
помеченный как unsafe, в котором уже можно вызывать эту функцию
(операцию). Приведем пример такого метода, созданного в классе Testing.
/// <summary>
/// определение размеров и типов
/// </summary>
unsafe public static void SizeMethod()