Передача по значению является значением по умолчанию в C #. Однако, если передаваемая переменная имеет ссылочный тип, вы передаете reference по значению. Это, возможно, источник вашей путаницы.
Обычно, если вы передаете ссылку по значению, вы можете изменить объект, на который она ссылается, и эти изменения будут сохраняться вне метода, но вы не можете заставить переменную ссылаться на другой объект, и это изменение будет сохраняться за пределами способ.