Method Parameters
In C#, arguments can be passed to parameters either by value or by reference.
Pass by value means passing a copy of the variable to the method.
Pass by reference means passing access to the variable to the method.
A variable of a reference type contains a reference to its data.
A variable of a value type contains its data directly.
Reference parameters
ref parameter modifier
ref parameter modifierThe
refkeyword causes arguments to be passed by reference, not by value.The argument for a
refparameter must be definitely assigned. The called method may reassign that parameter.
void Method(ref int refArgument)
{
    refArgument = refArgument + 44;
}
int number = 1;
Method(ref number);
Console.WriteLine(number);
// Output: 45out parameter modifier
out parameter modifierThe
outkeyword causes arguments to be passed by reference.The argument for an
outparameter needn't be definitely assigned. The called method must assign the parameter.
int initializeInMethod;
OutArgExample(out initializeInMethod);
Console.WriteLine(initializeInMethod);     // value is now 44
void OutArgExample(out int number)
{
    number = 44;
}in parameter modifier
in parameter modifierThe
inkeyword causes arguments to be passed by reference.The argument for an
inparameter must be definitely assigned. The called method can't reassign that parameter.
int readonlyArgument = 44;
InArgExample(readonlyArgument);
Console.WriteLine(readonlyArgument);     // value is still 44
void InArgExample(in int number)
{
    number = 19;    
    // error: Cannot assign to variable 'in int' because it is a readonly variable
}Last updated
Was this helpful?