Understanding Call by Value in C#: Parameter Passing and Data Copying

Learn about call by value in C#, a parameter-passing mechanism where a copy of the variable's value is passed to a method. This tutorial explains how call by value works with value types, demonstrates its behavior, and highlights its implications for modifying parameters within methods.



Call by Value in C#

In C#, when you pass a value-type parameter to a method, a copy of the value is created and passed. This means that any changes made to the parameter within the method do *not* affect the original variable. This is known as "pass by value".

Understanding Value-Type Parameters

Value types (like `int`, `float`, `bool`, `struct`, etc.) store their data directly in memory. When passed as parameters to methods, a copy of their values is created. The method receives a distinct copy of the data, independent of the original variable. Modifying the parameter inside the method does not change the original variable's value outside the method.

Example: Demonstrating Call by Value


public class Example {
    public void ModifyValue(int x) {
        x = x * x;
        Console.WriteLine($"Value inside method: {x}");
    }
    public static void Main(string[] args) {
        int value = 10;
        Example ex = new Example();
        Console.WriteLine($"Value before: {value}");
        ex.ModifyValue(value);
        Console.WriteLine($"Value after: {value}"); // value is still 10
    }
}

In this example, even though the `ModifyValue` method squares the input value, the original variable (`value`) remains unchanged because the method received a copy of the value, not a reference to the original variable.