Параметр-значение описывается в заголовке метода следующим образом: тип имя
Пример заголовка метода, имеющего один параметр-значение целого типа:
void P(int х)
Имя параметра может быть произвольным. Параметр х представляет собой локальную переменную, которая получает свое значение из вызывающей функции при вызове метода. В метод передается копия значения аргумента. Механизм передачи следующий: из ячейки памяти, в которой хранится переменная, передаваемая в метод, берется ее значение и копируется в специальную область памяти — область параметров. Метод работает с этой копией, следовательно, доступа к ячейке, где хранится сама переменная, не имеет. По завершении работы метода область параметров освобождается. Таким образом, для параметров-значений используется, как вы догадались, передача по значению. Ясно, что этот способ годится только для величин, которые не должны измениться после выполнения метода, то есть для его исходных данных.
При вызове метода на месте параметра, передаваемого по значению, может находиться выражение, а также, конечно, его частные случаи — переменная или константа. Должно существовать неявное преобразование типа выражения к типу параметра.
Например, пусть в вызывающей функции описаны переменные и им до вызова метода присвоены значения:
int х = 1;
sbyte с = 1;
ushort у = 1;
Тогда следующие вызовы метода Р, заголовок которого был описан ранее, будут синтаксически правильными:
Р(х); Р(с); Р(у); Р(200); Р(х / 4 + 1);