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.
Pernyataan pilihan -
Pernyataan if, if-else dan switch memilih pernyataan untuk dijalankan dari banyak jalur yang mungkin berdasarkan nilai ekspresi. Pernyataan menjalankan if pernyataan hanya jika ekspresi Boolean yang disediakan mengevaluasi ke true. Pernyataan ini if-else memungkinkan Anda memilih salah satu dari dua jalur kode yang akan diikuti berdasarkan ekspresi Boolean.
Pernyataanswitch memilih daftar pernyataan untuk dijalankan berdasarkan kecocokan pola dengan ekspresi.
Pernyataan if
Pernyataan if dapat berupa salah satu dari dua bentuk berikut:
Pernyataan
ifdenganelsebagian memilih salah satu dari dua pernyataan yang akan dijalankan berdasarkan nilai ekspresi Boolean, seperti yang ditunjukkan contoh berikut:DisplayWeatherReport(15.0); // Output: Cold. DisplayWeatherReport(24.0); // Output: Perfect! void DisplayWeatherReport(double tempInCelsius) { if (tempInCelsius < 20.0) { Console.WriteLine("Cold."); } else { Console.WriteLine("Perfect!"); } }Pernyataan
iftanpaelsebagian menjalankan isinya hanya jika ekspresi Boolean mengevaluasi ketrue, seperti yang ditunjukkan contoh berikut:DisplayMeasurement(45); // Output: The measurement value is 45 DisplayMeasurement(-3); // Output: Warning: not acceptable value! The measurement value is -3 void DisplayMeasurement(double value) { if (value < 0 || value > 100) { Console.Write("Warning: not acceptable value! "); } Console.WriteLine($"The measurement value is {value}"); }
Anda dapat menumpuk if pernyataan untuk memeriksa beberapa kondisi, seperti yang ditunjukkan contoh berikut:
DisplayCharacter('f'); // Output: A lowercase letter: f
DisplayCharacter('R'); // Output: An uppercase letter: R
DisplayCharacter('8'); // Output: A digit: 8
DisplayCharacter(','); // Output: Not alphanumeric character: ,
void DisplayCharacter(char ch)
{
if (char.IsUpper(ch))
{
Console.WriteLine($"An uppercase letter: {ch}");
}
else if (char.IsLower(ch))
{
Console.WriteLine($"A lowercase letter: {ch}");
}
else if (char.IsDigit(ch))
{
Console.WriteLine($"A digit: {ch}");
}
else
{
Console.WriteLine($"Not alphanumeric character: {ch}");
}
}
Dalam konteks ekspresi, Anda dapat menggunakan operator ?:bersyarat untuk mengevaluasi salah satu dari dua ekspresi berdasarkan nilai ekspresi Boolean.
Pernyataan switch
Pernyataan switch memilih daftar pernyataan untuk dijalankan berdasarkan kecocokan pola dengan ekspresi kecocokan, seperti yang ditunjukkan contoh berikut:
DisplayMeasurement(-4); // Output: Measured value is -4; too low.
DisplayMeasurement(5); // Output: Measured value is 5.
DisplayMeasurement(30); // Output: Measured value is 30; too high.
DisplayMeasurement(double.NaN); // Output: Failed measurement.
void DisplayMeasurement(double measurement)
{
switch (measurement)
{
case < 0.0:
Console.WriteLine($"Measured value is {measurement}; too low.");
break;
case > 15.0:
Console.WriteLine($"Measured value is {measurement}; too high.");
break;
case double.NaN:
Console.WriteLine("Failed measurement.");
break;
default:
Console.WriteLine($"Measured value is {measurement}.");
break;
}
}
Pada contoh sebelumnya, switch pernyataan menggunakan pola berikut:
- Pola relasional: untuk membandingkan hasil ekspresi dengan konstanta.
- Pola konstanta: uji apakah hasil ekspresi sama dengan konstanta.
Penting
Untuk informasi tentang pola yang didukung oleh switch pernyataan, lihat Pola.
Contoh sebelumnya juga menunjukkan kasus ini default . Kasus default menentukan pernyataan yang akan dijalankan saat ekspresi kecocokan tidak cocok dengan pola kasus lain. Jika ekspresi kecocokan tidak cocok dengan pola kasus apa pun dan tidak default ada kasus, kontrol jatuh melalui switch pernyataan.
Pernyataan switch menjalankan daftar pernyataan di bagian sakelar pertama yang pola kasusnya cocok dengan ekspresi kecocokan dan pelindung kasusnya, jika ada, mengevaluasi ke true. Pernyataan switch mengevaluasi pola kasus dalam urutan teks dari atas ke bawah. Pengkompilasi menghasilkan kesalahan ketika switch pernyataan berisi kasus yang tidak dapat dijangkau. Itu adalah kasus yang sudah ditangani oleh huruf besar atau polanya tidak mungkin dicocokkan.
Nota
Kasus ini default dapat muncul di tempat mana pun dalam pernyataan switch . Terlepas dari posisinya, default kasus dievaluasi hanya jika semua pola kasus lain tidak cocok atau goto default; pernyataan dijalankan di salah satu bagian pengalihan.
Anda dapat menentukan beberapa pola kasus untuk satu bagian switch pernyataan, seperti yang ditunjukkan contoh berikut:
DisplayMeasurement(-4); // Output: Measured value is -4; out of an acceptable range.
DisplayMeasurement(50); // Output: Measured value is 50.
DisplayMeasurement(132); // Output: Measured value is 132; out of an acceptable range.
void DisplayMeasurement(int measurement)
{
switch (measurement)
{
case < 0:
case > 100:
Console.WriteLine($"Measured value is {measurement}; out of an acceptable range.");
break;
default:
Console.WriteLine($"Measured value is {measurement}.");
break;
}
}
Dalam pernyataan switch , kontrol tidak dapat jatuh dari satu bagian pengalihan ke bagian berikutnya. Seperti yang ditunjukkan contoh di bagian ini, biasanya Anda menggunakan break pernyataan di akhir setiap bagian pengalihan untuk meneruskan kontrol keluar dari switch pernyataan. Anda juga dapat menggunakan pernyataan pengembalian dan pelemparan untuk meneruskan kontrol dari switch pernyataan. Untuk meniru perilaku fall-through dan meneruskan kontrol ke bagian sakelar lain, Anda dapat menggunakan pernyataan .goto
Penting
Setiap bagian pengalihan harus diakhir breakdengan , goto atau return. Jatuh dari satu bagian sakelar ke bagian berikutnya menghasilkan kesalahan kompilator. Namun, beberapa label sakelar dapat diterapkan ke bagian sakelar yang sama, seperti case < 0: dalam contoh di atas. Pilihan desain yang disengaja ini memungkinkan penanganan beberapa kasus secara ringkas yang memiliki logika yang sama atau saling bergantung.
Dalam konteks ekspresi, Anda dapat menggunakan switch ekspresi untuk mengevaluasi ekspresi tunggal dari daftar ekspresi kandidat berdasarkan kecocokan pola dengan ekspresi.
Penting
Perbedaan antara ekspresi pengalihan dan pernyataan pengalihan:
- pernyataan switch digunakan untuk mengontrol alur eksekusi dalam blok kode.
- ekspresi switch biasanya digunakan dalam konteks pengembalian nilai dan penetapan nilai, seringkali sebagai anggota bertubuh ekspresi.
- bagian kasus ekspresi pengalihan tidak boleh kosong, pernyataan pengalihan bisa.
Penjaga kasus
Pola kasus mungkin tidak cukup ekspresif untuk menentukan kondisi untuk eksekusi bagian pengalihan. Dalam kasus seperti itu, Anda dapat menggunakan penjaga kasus. Itu adalah kondisi tambahan yang harus dipenuhi bersama dengan pola yang cocok. Penjaga kasus harus berupa ekspresi Boolean. Anda menentukan penjaga kasus setelah when kata kunci yang mengikuti pola, seperti yang ditunjukkan contoh berikut:
DisplayMeasurements(3, 4); // Output: First measurement is 3, second measurement is 4.
DisplayMeasurements(5, 5); // Output: Both measurements are valid and equal to 5.
void DisplayMeasurements(int a, int b)
{
switch ((a, b))
{
case (> 0, > 0) when a == b:
Console.WriteLine($"Both measurements are valid and equal to {a}.");
break;
case (> 0, > 0):
Console.WriteLine($"First measurement is {a}, second measurement is {b}.");
break;
default:
Console.WriteLine("One or both measurements are not valid.");
break;
}
}
Contoh sebelumnya menggunakan pola posisional dengan pola relasional berlapis.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian berikut dari spesifikasi bahasa C#:
Untuk informasi selengkapnya tentang pola, lihat bagian Pola dan pencocokan pola dari spesifikasi bahasa C#.