C# 6 telah hadir berbarengan dengan rilis Visual Studio 2015 dan tentunya terdapat fitur baru pada C# yang membuat developer merasa diuntungkan. Dari beberapa fitur baru yang ada pada C# 6 saya akan membahas salah satu fitur yang menarik yaitu operator null propagation.
Bohong rasanya kalau kita tidak pernah terkena exception yang satu ini.
System.NullReferenceException: Object reference not set to an instance of an object.
Hayoo..ngaku aja kalau pernah kena null exception :p
Exception ini kan terjadi karena kita coba mengakses field ataupun method pada object yang tidak diinstansiasi. Kalau pemula biasanya karena lupa belum menggunakan operator new untuk membuat objek baru sedangkan untuk yang tingkat di atasnya biasanya pun masih bisa kena exception ini karena tidak mengecek apakah objek yang bersangkutan null atau tidak.
1 2 3 4 |
Music music=_musicService.FindByTitle("The Beginning"); var title=music.Title; var singer=music.Singer.Name; |
Misal ada kodingan di atas, akan kena null exception kalau :
1. music null
2. music tidak null tetapi singer null
Agar tidak kena exception maka yang dilakukan adalah menggunakan operator if untuk mengecek keadaan terlebih dahulu.
1 2 3 4 5 6 7 8 9 10 11 12 |
string title; string singer; if(music!=null) { title=music.Title; if(music.Singer!=null) { singer=music.Singer.Name; } } |
Dengan hadirnya C# 6 maka ada cara yang lebih enak mengecek ke-null-an suatu objek.
1 2 3 4 |
Music music=_musicService.FindByTitle("The Beginning"); var title=music?.Title; var singer=music?.Singer?.Name; |
Dengan menggunakan operator null propagation yang berupa tanda tanya (?) maka kita tidak akan terkena exception dan nilai yang dikembalikan adalah berupa null.
Contoh di bawah akan mengeset nilai untuk title dan singer jika bernilai null
1 2 3 4 |
Music music=_musicService.FindByTitle("The Beginning"); var title=music?.Title ?? "no title"; var singer=music?.Singer?.Name ?? "no singer"; |
Contoh koding yang lengkap bisa dilihat di sini dan silahkan bermain-main dengan contoh tersebut.
Semoga tulisan singkat ini bermanfaat.