The True If Ternary Operator

Posted at : Sep/16/2008
4422 Views

Mungkin beberapa programmer diantara kita ada yang sering atau pernah menggunakan perintah IIF. Ya...sebuah perintah yang digunakan untuk mempersingkat statement If yang memiliki struktur If...Then...Else. Di VB 9.0 terdapat fitur baru yang serupa dengan perintah IIF yaitu If Ternary Operator. Penggunaannya sama dengan perintah IIF. Namun ada beberapa perbedaan yang saya pikir cukup signifikan juga kalau kita konsen terhadap performance dan Best Practice.

Untuk lebih jelasnya mari kita langsung lihat contoh penggunaanya pada code dibawah ini :

   1: Module IfTernaryOperator
   2: 
   3:     Private Function Dimarzio() As String
   4:         Return "Dimarzio Pickup!"
   5:     End Function
   6: 
   7:     Private Function SeymourDuncan() As String
   8:         Return "Seymour Duncan Pickup!"
   9:     End Function
  10: 
  11:     Private Function NoPlayer() As String
  12:         Return "Please select the player first!"
  13:     End Function

Kode di atas adalah fungsi biasa yang dibuat didalam sebuah Module. Kemudian saya buat contoh penggunaan perintah IIf :

   1: Sub Main()
   2:     Dim player = "Paul G"
   3:     Dim pickup = IIf(player.Equals("Paul G"), Dimarzio, SeymourDuncan)
   4:     Console.WriteLine(player & " uses {0}", pickup)
   5:     Console.ReadLine()

Coba kita perhatikan kode diatas. Perintah IIf diatas menggunakan 3 buah parameter. Parameter yang pertama merupakan kondisi yang akan di evaluasi. Parameter kedua merupakan prosedur yang akan dieksekusi ketika hasil evaluasinya bernilai True, sedangkan parameter yang ketiga sebaliknya, akan di eksekusi jika hasil evaluasi parameter pertama bernilai False. Mari kita lihat dahulu screen shot hasilnya :

Mari kita lihat IL yang dihasilkan dari kode IIf diatas :

Whoa...ternyata fungsi IIf itu tergantung pada library Microsoft.VisualBasic.dll yang membutuhkan vb runtime. Dan ternyata lagi, tipe data yang dikembalikan berupa object yang membutuhkan memory lebih besar dibandingkan dengan primitive data type lainnya. Disini saya menggunakan VB 9.0 dimana fitur Local Type Inference yang digunakan untuk mendeklarasikan variabel "pickup" dimana tipe data tersebut tergantung dari nilai yang diberikan pada variabel itu. Kalau kita rubah tipe data ketiga Function di atas, maka hasil dari "pickup" variabel tetap sebagai Object. Sekarang mari kita lihat contoh penggunaan If Ternary Operator yang baru terdapat di VB 9.0 :

   1: Dim player = "Nuno B"
   2: Dim pickup = If(player.Equals("Paul G"), Dimarzio, SeymourDuncan)
   3: Console.WriteLine(player & " uses {0}", pickup)
   4: Console.ReadLine()

Penggunaan parameter If ternary dengan IIf function sama. Hasilnya sebagai berikut :

Sekarang kita lihat IL yang dihasilkan oleh kode diatas :

Interesting! If ternary operator sudah tidak lagi bergantung pada vb runtime. Dan menariknya lagi, tipe data yang dikembalikan dari hasil eksekusi If ternary operator tersebut tergantung dari return value fungsi yang digunakan pada parameter pertama dan parameter kedua. Jadi kalau kita rubah ketiga fungsi diatas menjadi fungsi yang akan mengembalikan tipe data integer maka kode IL nya juga akan mengikuti tipe data tersebut. Satu lagi perbedaan yang menarik antara IIf function dan If ternary operator yaitu warna :)) ...IIf function warnanya hitam sedangkan If ternary operator warnanya biru ;))

If ternary operator juga dapat menggunakan hanya dua parameter yang dikenal dengan istilah "null-coalescing operator" seperti operator "??" yang ada di C#. Berikut contohnya :

   1: Dim pickup As String = Nothing
   2: pickup = If(pickup, NoPlayer)
   3: Console.WriteLine(pickup)
   4: Console.ReadLine()

Hasilnya :

Jika parameter yang digunakan hanya dua, maka apabila value parameter pertama bernilai Nothing program akan eksekusi prosedur yang terdapat pada parameter kedua. Namun apabila variabel "pickup" nya diisi maka hasilnya akan sesuai dengan nilai yang diberikan pada variabel tersebut. Kegunaan dari penggunaan If ternary operator dengan dua parameter ini yaitu apabila kita menggunakan Nullable Types.

So best practice nya, segera rubah IIf function yang mungkin anda tulis di VB sebelum VB 9.0 dengan If ternary operator jika sekarang anda hendak bermigrasi ke VB 9.0...

 


ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Co-Founder & IT Trainer at Native Enterprise | Microsoft Azure Data Scientist | IBM RAG & Agentic AI | IBM Data Science & Data Analyst | Python Certified (PCEP, PCAP) | MOS, MTA, Xamarin Certified, ex MCT | ex MVP

CERTIFICATIONS

Microsoft Certified Associate
IBM RAG and Agentic AI Professional
IBM Data Science Professional IBM Data Analyst Professional
PCAP Associate Python Programmer Certified PCEP Entry Level Python Programmer Certified
Xamarin Certified
MOS 2007
MCPD MCTS
MCAD.NET

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  X Twitter Facebook  Instagram  LinkedIn

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2026   Rully Yulian MF   All rights reserved.