Operator Operator Lain Dalam Pemrograman Csharp

Selain operator-operator lain C# yang telah kita bahas di atas, C# juga memiliki beberapa operator lain yang berfungsi spesifik untuk kasus-kasus pemrograman tertentu. Bagian ini akan membahas tentang operator-operator tersebut.

Operator Kondisional (?:)

Operator kondisional (?:), juga sering disebut ternary operator, adalah bentuk singkat dari blok pemilihan if-else. Dengan menggunakan operator ini, kita dapat memeriksa suatu ekspresi atau kondisi tertentu. Bentuk umum penggunaan operator ? : adalah:

Baca Juga >> Tipe Data yang perlu di ketahui

kondisi ? nilai benar : nilai salah

Pada bentuk umum diatas, kondisi adalah ekspresi boolean yang akan diperiksa. nilai benar adalah nilai yang akan dikembalikan ketika kondisi bernilai true. Apabila kondisi bernilai false, maka nilai yang akan dikembalikan adalah nilai salah.

Berikut ini adalah contoh kode program yang menunjukkan penggunaan operator kondisional.

Pada kode diatas, operator kondisional pertama digunakan untuk mencari nilai terbesar antara variabel a dan b, yaitu dengan memeriksa ekspresi a > b. Jika ekspresi tersebut bernilai true maka nilai maksimumnya adalah a. Jika tidak, nilai maksimumnya adalah b. Operator kondisional kedua yang terdapat pada kode di atas digunakan untuk mencari harga mutlak dari variabel a, yaitu dengan memeriksa ekspresi a >= 0. Jika a lebih besar 0 maka harga mutlaknya adalah a. Jika tidak, harga mutlaknya adalah -a. Kode di atas sebenarnya dapat diselesaikan menggunakan konstruksi if- else, seperti berikut:

Hasil yang diberikan oleh program ini akan sama seperti pada program sebelumnya.

Operator checked dan unchecked

C# mengizinkan kita untuk mengaktifkan atau menonaktifkan pemeriksaan terhadap terjadinya overflow pada saat melakukan perhitungan numerik. Arithmetic overflow (sering disebut overflow saja) adalah kondisi yang terjadi ketika suatu perhitungan tertentu memberikan hasil yang berada di luar rentang nilai yang sudah ditetapkan, bisa terlalu besar atau terlalu kecil. Sebagai contoh, perhatikan kode berikut:

Apabila dilihat sekilas, kode diatas tampaknya benar. Hati-hati! Anda perlu tahu bahwa rentang nilai untuk tipe byte adalah 0 sampai 255. Dengan demikian, 255 + 3 akan menyebabkan terjadinya overflow karena hasil perhitungan (258) sudah berada di luar rentang. Dalam situasi seperti ini, variabel b akan bernilai 2 karena nilai 256 akan dikembalikan lagi ke rentang awal, yaitu 0.

Dalam keadaan normal (default), C# tidak mengaktifkan pemeriksaan overflow. Dengan demikian, kode di atas tetap dapat dieksekusi dan tidak akan membangkitkan eksepsi (kesalahan), dan kode tersebut dikatakan berada dalam keadaan unchecked. Kode yang berada dalam keadaan ini juga dapat ditulis dengan menyertakan operator unchecked, seperti yang ditunjukkan oleh kode program berikut:

Pada saat eksekusi, program di atas dapat berjalan normal seakan-akan tidak terjadi overflow, meskipun sebenarnya hasilnya salah atau tidak sesuai dengan yang diharapkan. Agar pesan overflow dapat ditampilkan, seharusnya Anda mengganti operator unchecked di atas dengan operator checked, seperti berikut:

Selain menggunakan operator checked, aktivasi pemeriksaan overflow juga dapat dilakukan dengan menyertakan opsi kompilator /checked pada saat kita melakukan kompilasi terhadap kode program.

Operator is

Operator is berfungsi untuk melakukan pemeriksaan tipe dari suatu objek tertentu, apakah sesuai atau tidak dengan tipe lain yang kita gunakan sebagai pembanding. Sebagai contoh, perhatikan potongan kode berikut:

Kode di atas memeriksa tipe dari variabel i, apakah Int32 atau bukan. Jika ya, maka ekspresi (i is Int32) akan menghasilkan nilai true. Jika bukan, maka nilai yang dihasilkan adalah false. Meskipun demikian, kita juga dapat menggunakan kelas induk dari Int 32 untuk memeriksa tipe dari variabel i, seperti yang ditunjukkan oleh contoh kode berikut:

Karena semua kelas dan struktur di dalam C# (termasuk struktur System.Int32) merupakan turunan dari kelas System.Object dan object adalah alias dari System.Object, maka ekspresi yang didefinisikan di atas pun akan bernilai true. Meskipun System. Int 32 adalah tipe struktur, tapi tetap saja System. Int 32 termasuk turunan dari kelas System.Object. Mengapa? Karena semua tipe nilai merupakan turunan dari kelas System.ValueType, dan kelas System.ValueType diturunkan dari kelas System.Object. Berikut adalah contoh kode program yang menunjukkan penggunaan operator is.

Operator as

Berbeda dengan operator is yang berguna untuk memeriksa tipe, operator objek dengan tipe tertentu sebagai as digunakan untuk memerankan suatu 0 tipe lain. Dengan kata lain, operator as digunakan untuk melakukan konversi tipe (typecasting) secara eksplisit.

Berikut adalah kode program yang menunjukkan penggunaan operator as.

Pada kode program di atas, s adalah objek dari tipe object yang selanjutnya diisi dengan nilai bertipe string. Agar nilai dari objek s dapat diisikan ke dalam objek s1 maka s harus diperankan ke tipe string terlebih dahulu menggunakan operator as. Tanpa proses konversi tersebut, hal ini tidak dapat dilakukan karena antara s dan s1 berbeda tipe, s bertipe object, sedangkan s1 bertipe string.

Operator sizeof

Sama seperti C/C++, C# juga memiliki operator sizeof, yang berguna untuk memperoleh ukuran (dalam satuan byte) dari suatu tipe tertentu. Sebagai contoh, apabila kita ingin mengetahui ukuran dari tipe data int, maka kita dapat menuliskan perintah berikut:

Untuk tipe kompleks (bukan tipe primitif), Anda perlu menempatkan operator sizeof di dalam blok unsafe. Sebagai contoh, apabila kita memiliki kelas dengan nama Titik, maka kita dapat memperoleh ukuran dari tipe kelas tersebut menggunakan kode berikut:

Berikut adalah contoh kode program yang menunjukkan penggunaan operator sizeof.

Operator typeof

Operator typeof digunakan untuk memperoleh tipe data CTS pada saat kompilasi (compile-time). Operator ini akan menghasilkan objek dari kelas Type. Contohnya adalah perintah typeof ( int) akan mengembalikan tipe System.Int32, typeof (string) akan mengembalikan type System.String, dan sebagainya. Perlu Anda ingat bahwa operator typeof tidak dapat digunakan untuk mendapatkan informasi tipe pada saat program sedang berjalan (run-time). Untuk keperluan semacam ini, gunakan Get Type (), bukan typeof. Perhatikan contoh potongan kode di bawah ini.

Berikut adalah program yang dapat menunjukkan kegunaan operator typeof.



Baca Juga >> Operator Logika Pada C#