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.
Operator true mengembalikan untuk menunjukkan bahwa operand-nya pasti benar, sementara true operator mengembalikan false nilai bool untuk menunjukkan bahwa operand-nya pasti salah.
Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.
Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.
Tip
Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.
Jenis yang mengimplementasikan operator true dan false harus mengikuti semantik ini:
- "Apakah objek ini benar?" memutuskan untuk operator
true. Operatortruemengembalikantruejika objek adalahtrue. Jawabannya adalah "Ya, objek ini benar". - "Apakah objek ini salah?" memutuskan ke operator
false. Operatorfalsemengembalikantruejika objek adalahfalse. Jawabannya adalah "Ya, objek ini salah".
Operator true dan false tidak dijamin untuk saling melengkapi. Artinya, baik operator true dan false mungkin mengembalikan bool nilai false untuk operan yang sama. Jika jenis mendefinisikan salah satu dari dua operator ini, jenis juga harus menentukan operator lain.
Tip
bool? Gunakan jenis jika Anda perlu mendukung logika tiga nilai (misalnya, saat Anda bekerja dengan database yang mendukung jenis Boolean tiga nilai). C# menyediakan & operator dan | yang mendukung logika tiga nilai dengan bool? operand. Untuk informasi selengkapnya, lihat bagian Operator logis Boolean yang dapat diubah ke null dari artikel Operator logis Boolean .
Ekspresi Boolean
Jenis dengan operator yang ditentukan true dapat menjadi jenis hasil dari ekspresi kondisional pengontrol dalam jika, lakukan, sementara, dan untuk pernyataan dan di operator kondisional?:. Untuk informasi selengkapnya, lihat bagian ekspresi Boolean dari spesifikasi bahasa C#.
Operator logika bersyarat yang ditentukan pengguna
Jika jenis dengan operator yang ditentukan true dan membebanifalse LOGIS AND dengan cara tertentu, AND logis bersyar, masing-masing dapat dievaluasi untuk operand jenis tersebut.| Untuk informasi selengkapnya, lihat bagian Operator logis kondisional yang ditentukan pengguna dari bagian spesifikasi bahasa C#.
Contoh
Contoh berikut menyajikan tipe yang mendefinisikan kedua operator true dan false. Jenis ini juga membebani operator & AND logis-sehingga && operator juga dapat dievaluasi untuk operan jenis tersebut.
public struct LaunchStatus
{
public static readonly LaunchStatus Green = new LaunchStatus(0);
public static readonly LaunchStatus Yellow = new LaunchStatus(1);
public static readonly LaunchStatus Red = new LaunchStatus(2);
private int status;
private LaunchStatus(int status)
{
this.status = status;
}
public static bool operator true(LaunchStatus x) => x == Green || x == Yellow;
public static bool operator false(LaunchStatus x) => x == Red;
public static LaunchStatus operator &(LaunchStatus x, LaunchStatus y)
{
if (x == Red || y == Red || (x == Yellow && y == Yellow))
{
return Red;
}
if (x == Yellow || y == Yellow)
{
return Yellow;
}
return Green;
}
public static bool operator ==(LaunchStatus x, LaunchStatus y) => x.status == y.status;
public static bool operator !=(LaunchStatus x, LaunchStatus y) => !(x == y);
public override bool Equals(object obj) => obj is LaunchStatus other && this == other;
public override int GetHashCode() => status;
}
public class LaunchStatusTest
{
public static void Main()
{
LaunchStatus okToLaunch = GetFuelLaunchStatus() && GetNavigationLaunchStatus();
Console.WriteLine(okToLaunch ? "Ready to go!" : "Wait!");
}
static LaunchStatus GetFuelLaunchStatus()
{
Console.WriteLine("Getting fuel launch status...");
return LaunchStatus.Red;
}
static LaunchStatus GetNavigationLaunchStatus()
{
Console.WriteLine("Getting navigation launch status...");
return LaunchStatus.Yellow;
}
}
Perhatikan perilaku sirkuit pendek operator &&.
GetFuelLaunchStatus Ketika metode mengembalikan LaunchStatus.Red, operand && kanan operator tidak dievaluasi. Kondisi itu pasti salah. Hasil dari AND logis tidak bergantung pada nilai operand sebelah kanan. Output dari contoh ini adalah sebagai berikut:
Getting fuel launch status...
Wait!