Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
C# menyediakan sejumlah operator. Banyak dari mereka didukung oleh jenis bawaan dan memungkinkan Anda melakukan operasi dasar dengan nilai jenis tersebut. Operator tersebut mencakup grup berikut:
- Operator aritmatika yang melakukan operasi aritmatika dengan operand numerik
- Operator perbandingan yang membandingkan operand numerik
-
Operator logis Boolean yang melakukan operasi logis dengan
booloperand - Operator bitwise dan shift yang melakukan operasi bitwise atau shift dengan operand dari jenis integral
- Operator kesetaraan yang memeriksa apakah operandnya sama atau tidak
Biasanya, Anda dapat membebani operator tersebut, yaitu, menentukan perilaku operator untuk operan jenis yang ditentukan pengguna.
Ekspresi C# yang paling sederhana adalah literal (misalnya, bilangan bulat dan angka riil ) dan nama variabel. Anda dapat menggabungkannya ke dalam ekspresi kompleks dengan menggunakan operator. Prioritas operator dan associativity menentukan urutan operasi dalam ekspresi dilakukan. Anda dapat menggunakan tanda kurung untuk mengubah urutan evaluasi yang diberlakukan oleh prioritas operator dan associativity.
Dalam kode berikut, contoh ekspresi berada di sisi kanan penugasan:
int a, b, c;
a = 7;
b = a;
c = b++;
b = a + b * c;
c = a >= 100 ? b : c / 10;
a = (int)Math.Sqrt(b * b + c * c);
string s = "String literal";
char l = s[s.Length - 1];
List<int> numbers = [..collection];
b = numbers.FindLast(n => n > 1);
Biasanya, ekspresi menghasilkan hasil dan dapat disertakan dalam ekspresi lain.
void Panggilan metode adalah contoh ekspresi yang tidak menghasilkan hasil. Ini hanya dapat digunakan sebagai pernyataan, seperti yang ditunjukkan contoh berikut:
Console.WriteLine("Hello, world!");
Berikut adalah beberapa jenis ekspresi lain yang disediakan C#:
Ekspresi string terinterpolasi yang menyediakan sintaksis yang nyaman untuk membuat string yang diformat:
var r = 2.3; var message = $"The area of a circle with radius {r} is {Math.PI * r * r:F3}."; Console.WriteLine(message); // Output: // The area of a circle with radius 2.3 is 16.619.Ekspresi Lambda yang memungkinkan Anda membuat fungsi anonim:
int[] numbers = { 2, 3, 4, 5 }; var maximumSquare = numbers.Max(x => x * x); Console.WriteLine(maximumSquare); // Output: // 25Ekspresi kueri yang memungkinkan Anda menggunakan kemampuan kueri langsung di C#:
int[] scores = { 90, 97, 78, 68, 85 }; IEnumerable<int> highScoresQuery = from score in scores where score > 80 orderby score descending select score; Console.WriteLine(string.Join(" ", highScoresQuery)); // Output: // 97 90 85
Anda dapat menggunakan definisi isi ekspresi untuk memberikan definisi ringkas untuk metode, konstruktor, properti, pengindeks, atau finalizer.
Prioritas operator
Dalam ekspresi dengan beberapa operator, operator dengan prioritas yang lebih tinggi dievaluasi sebelum operator dengan prioritas yang lebih rendah. Dalam contoh berikut, perkalian dilakukan terlebih dahulu karena memiliki prioritas yang lebih tinggi daripada penambahan:
var a = 2 + 2 * 2;
Console.WriteLine(a); // output: 6
Gunakan tanda kurung untuk mengubah urutan evaluasi yang diberlakukan oleh prioritas operator:
var a = (2 + 2) * 2;
Console.WriteLine(a); // output: 8
Tabel berikut mencantumkan operator C# yang dimulai dengan prioritas tertinggi hingga terendah. Operator dalam setiap baris memiliki prioritas yang sama.
| Para Operator | Kategori atau nama |
|---|---|
x.y, f(x), a[i], x?.y, , x?[y]x++, x--, x!, baru, typeof, checked, unchecked, default, nameof, delegasi, sizeof, stackalloc, x-y> |
Utama |
| +x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, &x, *x, true dan false | Unari |
| x..y | Jangkauan |
| switch, dengan | ekspresi switch dan with |
| x * y, x / y, x % y | bersifat perkalian |
| x + y, x – y | Aditif |
| x << y, x >> y, x >>> y | Pergeseran |
| x < y, x > y, x <= y, x >= y, is, is, as | Pengujian relasi dan tipe |
| x == y, x != y | Kesetaraan |
x & y |
Logis Boolean AND atau bitwise logis AND |
x ^ y |
XOR logis Boolean atau XOR logis bitwise |
x | y |
Logis Boolean ATAU logisbitwise OR |
| x & y | Kondisional DAN |
| x || y | Atau Bersyarat |
| x ?? y | Operator null-coalescing |
| c ? t : f | Operator bersyarah |
| x = y, x += y, x -= y, x *= y, x /= y, x %= y, x &= y, x |= y, x ^= y, x <<= y, x >>= y, x >>>= y, x?? = y, => | Penugasan dan deklarasi lambda |
Untuk informasi tentang prioritas combinator pola logis, lihat bagian Prioritas dan urutan pemeriksaan pola logis dari artikel Pola .
Associativity operator
Ketika operator memiliki prioritas yang sama, asokiativitas operator menentukan urutan di mana operasi dilakukan:
-
Operator asosiatif kiri dievaluasi secara berurutan dari kiri ke kanan. Kecuali untuk operator penugasan dan operator null-coalescing, semua operator biner bersifat asosiatif kiri. Misalnya,
a + b - cdievaluasi sebagai(a + b) - c. -
Operator asosiatif kanan dievaluasi secara berurutan dari kanan ke kiri. Operator penugasan, operator null-coalescing, lambda, dan operator
?:kondisional bersifat asosiatif kanan. Misalnya,x = y = zdievaluasi sebagaix = (y = z).
Penting
Dalam ekspresi formulir P?.A0?.A1, jika P adalah null, tidak juga A0A1 dievaluasi. Demikian pula, dalam ekspresi formulir P?.A0.A1, karena A0 tidak dievaluasi ketika P null, tidak ada A0.A1yang . Lihat spesifikasi bahasa C# untuk detail selengkapnya.
Gunakan tanda kurung untuk mengubah urutan evaluasi yang diberlakukan oleh asokiativitas operator:
int a = 13 / 5 / 2;
int b = 13 / (5 / 2);
Console.WriteLine($"a = {a}, b = {b}"); // output: a = 1, b = 6
Evaluasi operand
Tidak terkait dengan prioritas operator dan associativity, operan dalam ekspresi dievaluasi dari kiri ke kanan. Contoh berikut menunjukkan urutan operator dan operand dievaluasi:
| Ekspresi | Urutan evaluasi |
|---|---|
a + b |
a, b, + |
a + b * c |
a, b, c, *, + |
a / b + c * d |
a, b, /, c, d, *, + |
a / (b + c) * d |
a, b, c, +, /, d, * |
Biasanya, semua operand operator dievaluasi. Namun, beberapa operator mengevaluasi operand secara kondisional. Artinya, nilai operand paling kiri dari operator tersebut menentukan apakah (atau mana) operand lain harus dievaluasi. Operator ini adalah operator logis kondisional AND (&&) dan OR (||),operator ?? null-coalescing dan ??=, operator ?. null-conditional dan ?[], dan operator kondisional ?:. Untuk informasi selengkapnya, lihat deskripsi setiap operator.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian berikut dari spesifikasi bahasa C#: