Ekspresi terbentuk
dari rangkaian operator dan operand. Operator yang terdapat dalam suatu ekpresi menyatakan proses apa yang akan
dilakukan pada suatu operand. Contoh dari operator adalah
+, -,
*, / dan new. Sedangkan contoh dari
operand adalah
literal,
fields, variabel lokal dan ekpresi, suatu ekspresi dapat digunakan untuk
membentuk ekspresi yang lain yang lebih besar.
C#
memiliki tiga macam operator: operator unary, binary dan ternary. Operator
unary memiliki satu buah
operand dan
menggunakan notasi
prefix atau
postfix (misalnya --x atau x++). Operator binary
menggunakan dua
buah operand
dan menggunakan notifikasi infix
(misalnya x + y).
C# hanya
memiliki satu
buat operator
ternary yaitu,
? :,
operator ini memerlukan tiga buah operand dan menggunakan notasi infix
(misalnya x ? y : z).
Dalam
pengoperasiannya operator memiliki tingkatan, misalnya jika kita memiliki ekspresi x + y * z, maka ekspresi ini akan di eksekusi dengan urutan x + (y * z) karena operator
* memiliki tingkatan yang lebih
tinggi dibandingkan dengan operator
+. Jika
kita ingin mengubah urutan eksekusinya, kita dapat menggunakan tanda kurung.
Bahasa pemrograman C# memiliki kemampuan untuk melakukan overload terhadap
operator yang berarti setiap operator bisa memiliki fungsi yang berbeda untuk
object yang berbeda.
Tabel
berikut menunjukan tingkat dari operator dari level yang tinggi ke level
terendah, operator dalam kategori yang sama memiliki tingkat yang sama pula.
Kategori
|
Ekspresi
|
Keterangan
|
Primary
|
x.m
|
Mengakses member
|
x(...)
|
Pemanggilan
methon dan delegate
|
|
x[.. .]
|
Mengakses array dan indexer
|
|
x++
|
Post-increment (Penjumlahan dengan 1 setelah x dievaluasi)
|
|
x--
|
Post-decrement
(Pengurangan dengan 1 setelah x dievaluasi)
|
|
Kategori
|
Ekspresi
|
Keterangan
|
new T(...)
|
Pembuatan object dan delegate
|
|
new T[...]
|
Pembuatan array
|
|
typeof(T)
|
Mendapatkan object System.Type dari T
|
|
checked(x)
|
Pengecekan ekspresi dalam konteks
checked
|
|
unchecked(x)
|
Pengecekan ekspresi dalam konteks
unchecked
|
|
Unary
|
+x
|
Identity
|
-x
|
Negation
|
|
!x
|
Logical negation
|
|
~x
|
Bitwise negation
|
|
++x
|
Pre-increment (Penjumlahan dengan 1 sebelum x dievaluasi)
|
|
--x
|
Pre-decrement (Pengurangan dengan 1 sebelum x dievaluasi)
|
|
(T)x
|
Mengkonversi x kedalam
tipe T secara eksplisit
|
|
Multiplicative
|
x * y
|
Perkalian
|
x / y
|
Pembagian
|
|
x % y
|
Sisa pembagian
|
|
Additive
|
x + y
|
Penjumlahan, pengabungan string, kombinasi delegate
|
x – y
|
Pengurangan,
penghapusan delegate
|
|
Shift
|
x << y
|
Shift left
|
x >> y
|
Shift right
|
|
Relational
and type
testing
|
x < y
|
Lebih kecil dari
|
x > y
|
Lebih besar dari
|
|
x <= y
|
Lebih kecil atau sama
dengan
|
|
x >= y
|
Lebih besar atau sama
dengan
|
|
x is T
|
Return true jika x adalah T, atau false jika sebaliknya
|
|
x as T
|
Return x sebagai tipe T; atau null jika x tidak bertipe T
|
|
Equality
|
x == y
|
Sama
|
x != y
|
Tidak sama
|
|
Logical AND
|
x & y
|
Integer bitwise AND, boolean logical AND
|
Logical XOR
|
x A y
|
Integer bitwise XOR, boolean logical XOR
|
Logical OR
|
x | y
|
Integer bitwise OR, boolean logical OR
|
Conditional AND
|
x && y
|
y
akan dievaluasi jika x bernilai true
|
Conditional OR
|
x || y
|
y
akan dievaluasi jika x bernilai false
|
Conditional
|
x
? y : z
|
y akan
dievaluasi
jika
x bernilai true
dan z akan
dievaluasi
jika
x bersinal false
|
Assignment
|
x = y
|
Pemberian suatu nilai
|
x op= y
|
Compound assignment. Bisa digunakan pada operator *= /= %= += -= <<= >>=
&=
^= |=
|
a. Checked vs Unchecked
Operator checked dan unchecked dapat digunanakan dalam konteks
operasi
aritmatika untuk bilangan bulat. Jika kita membuat suatu program kemudiankita
memberikan nilai yang lebih besar dari apa yang dapat di tampung oleh variabel
tersebut maka error akan terjadi pada program kita. Ada saatnya dimana kita
ingin supaya kompiler tidak memberikan error pada saat kita melakukan operasi
ini, untuk itu kita dapat menggunakan operator unchecked.
Dalam konteks
checked, System.OverflowException akan terjadi
pada saat runtime jika kita memberikan nilai yang
lebih besar kedalam suatu variabel, atau akan terjadi kesalahan pada waktu
kompilasi jika operasi yang dievaluasi berupa ekspresi konstan.
public static void Main()
{
int i = int.MaxValue;
checked
{
Console.Out.WriteLine(i + 1); //
Exception
}
unchecked
{
Console.Out.WriteLine(i + 1); //
Overflow } }
}
}
Jika program
diatas dijalankan blok checked akan
menghasilkan kesalahan karena
mencoba untuk memberikan nilai sebesar nilai maksimal untuk tipe int ditambah
satu.
Unhandled Exception:
System.OverflowException:
Arithmetic operation resulted in an overflow.
Sedangkan blok unchecked tidak
akan mengahasilkan kesalahan. Operasi unchecked ini
mirip dengan
cara kerja
ordometer pada
kendaraan kita,
jika nilai maksimumnya sudah tercapai maka dia
akan mulai lagi dari awal, misalnya jika nilai maksimumnya adalah 999,999 maka
berjalan sejauh 1 kilometer lagi ordometer akan menunjukan nilai 000,000, yang
merupakan nilai minimal ordometer. Demikian juga dengan int.MaxValue +
1 akan menjadi nilai int.MinValue (-2147483648) yang
merukan
nilai minimal dari tipe data int.
0 komentar
Post a Comment