Beda Ref dan Out C#

23Apr14

Jaman kuliah dulu, pertama kali diajarin penggunaan function atau method dijelaskan bahwa parameternya bisa bertipe value atau reference.

Kalau by value, artinya nilai parameter tidak direplace dengan hasil pengolahan parameter di method tersebut.
Kalau by reference, artinya nilai parameter di replace dengan hasil pengolahan parameter di method tersebut.

Misal

</pre>
class program{

static void byval(string param){
param = "by val";
}

static void byref(ref string param)
param = "by ref";

}

static void Main(string[] args){

string val = "abcd";
byval(val);

Console.WriteLine(val);
//hasilnya tetap abcd

byref(ref val);

Console.WriteLine(val);

//hasilnya menjadi by val

}

}
<pre>

Di C# ada dua tipe reference, yaitu : out dan ref.
*Gak tau dengan bahasa lainnya

Bedanya adalah :
Jika menggunakan out, parameter bisa BELUM di inisialisasi atau valuenya masih null

Jika menggunakan ref, parameter HARUS di inisialisasi atau valuenya sudah ada.

Misalnya :

</pre>
class Program
{
static void MethodDenganRef(ref string param)
{
param = "Ref";
}

static void MethodDenganOut(out string param)
{
param = "Out";
}

static void Main(string[] args)
{
string _out ;
string _ref = "test";

MethodDenganOut(out _out);
MethodDenganRef(ref _ref);

Console.WriteLine(_ref);
Console.WriteLine(_out);
Console.ReadLine();
}
}

Apabila variable _ref itu null, maka akan compile error.

Seperti dibawah ini :

</pre>
class Program
{
static void MethodDenganRef(ref string param)
{
param = "Ref";
}

static void MethodDenganOut(out string param)
{
param = "Out";
}

static void Main(string[] args)
{
string _out = "test";
string _ref;

MethodDenganOut(out _out);
MethodDenganRef(ref _ref);

Console.WriteLine(_ref);
Console.WriteLine(_out);
Console.ReadLine();

}
}
<pre>
Advertisements


No Responses Yet to “Beda Ref dan Out C#”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: