Bersambung dari post sebelumnya mengenai Dynamically Typed Objects pada C# 4.0, kali ini saya ingin membahas salah satu fitur pada C# 4.0 yang pada dasarnya cukup sederhana tetapi berguna dan cukup membantu. Simple but useful .
Bagi teman2 yang sering bermain dengan VB, tentu mengetahui VB memiliki fitur Optional Parameter. Sekarang pada C# 4.0 juga terdapat fitur serupa, bahkan dilengkapi dengan Named Parameter. Optional dan Named Parameter adalah dua fitur yang berbeda tetapi sering digunakan bersama. Salah satu hal yang menyebabkan perlu adanya Optional and Named Parameter pada C# 4.0 adalah kesulitan yang terjadi pada saat kita memanggil function2 pada API COM seperti Office Automation yang terkadang terdapat puluhan parameter.
Optional Parameter bekerja dengan memberikan default value pada parameter, sehingga pemanggil function diperbolehkan untuk memberi sebuah nilai ataupun tidak terhadap parameter tertentu. Bila tidak diberi nilai, maka default value dari parameter tersebut akan otomatis terisi.
1: public static void Greets(string _from, string words = "Hello", string to = "You")
2: {
3: Console.WriteLine(_from + " says " + words + " to " + to);
4: }
5:
6: static void Main()
7: {
8: Greets("Wely", "Happy New Year", "INDC Folks");
9: //pemanggilan function Greets dengan 3 parameter lengkap, common condition
10:
11: Greets("John", "Good Morning");
12: //pemanggilan dengan hanya mengirim 2 parameter, maka to akan diisi oleh "You"
13: //sama seperti Greets("John", "Good Morning", "You");
14:
15: Greets("Bob");
16: //sama seperti Greets("Bob", "Hello", "You");
17: }
Akan tetapi C# 4.0 tidak mengizinkan kita untuk menulis:
Greets("Brandon",,"Roy");
Oleh karena itu, kita bisa menggunakan Named Parameter untuk membantu. Named Parameter memungkinkan kita untuk memberikan nilai yang akan di-pass ke sebuah function tanpa harus mengikuti urutan yang ada.
1: Greets("Brandon", to:"Roy");
2: //named parameter
3:
4: Greets(to: "Me", _from: "Shirley", word: "Good night");
5: //named parameter, letak posisi parameter dapat kita pindah
See you in next C# 4.0 post
Sedikit menambahkan, salah satu manfaatnya adalah kita tidak perlu membuat method overload yang bermain-main dgn parameter. Biar jelas, langsung contoh aja:
public void MyMethod(int param1, int param2, int param3)
{
// do something here
}
public void MyMethod(int param1, int param2)
MyMethod(param1, param2, 0);
public void MyMethod(int param1)
MyMethod(param1, 0);
Di C# 4.0, kita bisa menuliskannya sbb:
public void MyMethod(int param1, int param2 = 0, int param3 = 0)
akhirnya fasilitas ini ada juga, PHP sudah mempunyai hal yang seperti ini sejak lama, saat berpindah ke .NET agak kesulitan juga karena hal ini belum ada.
thx for share
Exactly!
Kalo pindahnya ke C#, emang lom ada bos. Tapi kalo ke VB, dari versi classic vb udah ada..
bener kata si habibie, jadi sama dengan vb classic.Tapi ini jadi lebih membuat sintak kita jauh lebih sedikit.
Btw overloading method yang lama masih ada khan ?
Method overloading tentu saja masih ada.
So kita boleh use both of them.
Dalam artikel ini saya akan mengajak teman2 mengintip sedikit tentang .NET Framework 4.0. Satu hal yang