C # - Pasar parámetros por valor

Este es el mecanismo predeterminado para pasar parámetros a un método. En este mecanismo, cuando se llama a un método, se crea una nueva ubicación de almacenamiento para cada parámetro de valor.

Los valores de los parámetros reales se copian en ellos. Por lo tanto, los cambios realizados en el parámetro dentro del método no tienen ningún efecto sobre el argumento. El siguiente ejemplo demuestra el concepto:

using System;

namespace CalculatorApplication {
   class NumberManipulator {
      public void swap(int x, int y) {
         int temp;
         
         temp = x; /* save the value of x */
         x = y;    /* put y into x */
         y = temp; /* put temp into y */
      }
      static void Main(string[] args) {
         NumberManipulator n = new NumberManipulator();
         
         /* local variable definition */
         int a = 100;
         int b = 200;
         
         Console.WriteLine("Before swap, value of a : {0}", a);
         Console.WriteLine("Before swap, value of b : {0}", b);
         
         /* calling a function to swap the values */
         n.swap(a, b);
         
         Console.WriteLine("After swap, value of a : {0}", a);
         Console.WriteLine("After swap, value of b : {0}", b);
         
         Console.ReadLine();
      }
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200

Muestra que no hay ningún cambio en los valores aunque habían cambiado dentro de la función.