By default when you pass
argument to a method is value type. This means that change to the parameter that
receives a value type will not affect the actual argument used in the call. But
Through the use the ref, it is possible to pass any type of value as
reference.
Before going into the
mechanics of using ref, it is useful to understand why you might to pass
a value type by reference reason is that
1.
It
allows a method to alter the contents of its arguments.
Some time you will want a
method to be able to operate on the actual arguments that are passed to it.
Example: Swap() method that exchange the values of its two argument
Use of ref
The ref parameter
modifier causes C# to create a call-by-reference, rather than a call-by-value.
The ref modifier is specified when the method is declared and when it is called.
Example
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
use_ref
{
class refdemo
{
public void sqr(ref
int i)
{
i = i * i;
}
}
class Program
{
static void
Main(string[] args)
{
refdemo obj = new
refdemo();
int a = 5;
Console.WriteLine("a
before call:" + a);
obj.sqr(ref
a);
Console.WriteLine("a
after call:" + a);
Console.Read();
}
}
}
Note: Ref precedes the
entire parameter declaration in the method and that is precedes the argument
when the method is called.
Output of program
So using ref, it is now
possible to write a method that exchanges the value of it two values of its two
value-type arguments.
Example 2
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
swap
{
class valswap
{
public void
swap(ref int a,
ref int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
}
class Program
{
static void
Main(string[] args)
{
valswap obj = new
valswap();
int x = 5;
int y = 10;
Console.WriteLine("x
and y before call:" + x +" " + y);
obj.swap(ref
x, ref y);
Console.WriteLine("x
and y after call:" + x +" " + y);
}
}
}
Output of program
Author-Sayta Prakash