Pertanyaan verifikasi bersifat ya atau tidak: adakah nilai di bawah batas kelulusan, dan apakah semua peserta memenuhi syarat. Operator kuantor menjawab pertanyaan tersebut dengan nilai bool, dan eksekusinya berhenti segera setelah jawaban pasti ditemukan.

Tiga Operator Kuantor #

Contoh berikut menguji daftar nilai dan daftar peserta ujian:

csharp
record Siswa(string Nama, int Nilai);

int[] nilai = { 85, 60, 90 };

List<Siswa> siswa = new()
{
    new Siswa("Budi", 85),
    new Siswa("Siti", 60),
    new Siswa("Dewi", 90)
};

Console.WriteLine($"Ada nilai remedial: {nilai.Any(n => n < 70)}");
Console.WriteLine($"Semua lulus: {nilai.All(n => n >= 70)}");
Console.WriteLine($"Memuat nilai 90: {nilai.Contains(90)}");
Console.WriteLine($"Siti terdaftar: {siswa.Any(s => s.Nama == "Siti")}");

Output yang Dihasilkan:

text
Ada nilai remedial: True
Semua lulus: False
Memuat nilai 90: True
Siti terdaftar: True

Mari kita bedah baris demi baris:

  1. nilai.Any(n => n < 70): mengembalikan True pada kecocokan pertama tanpa memeriksa sisa elemen.
  2. nilai.All(n => n >= 70): mengembalikan False pada pelanggaran pertama tanpa menelusuri sisa elemen.
  3. nilai.Contains(90): mencari satu nilai tertentu tanpa perlu lambda.
  4. siswa.Any(s => s.Nama == "Siti"): Any juga dipakai untuk menguji keberadaan berdasarkan property elemen.

Ringkasan Perilaku #

OperatorPertanyaanBerhenti saat
Anyadakah elemen yang memenuhi?kecocokan pertama
Allapakah semua memenuhi?pelanggaran pertama
Containsadakah nilai tertentu?nilai ditemukan

Any tanpa predikat hanya menguji apakah urutan memuat elemen. Untuk HashSet<T> dan Dictionary<TKey,TValue>, Contains memakai hash sehingga pencariannya jauh lebih cepat daripada menelusuri seluruh isi.

Perilaku berhenti dini ini menghemat waktu pada predikat yang mahal: bila Any menemukan kecocokan pada elemen kedua, sisa ribuan elemen tidak diperiksa. Karena hasilnya hanya satu nilai bool, operator ini juga lazim dipakai untuk validasi sebelum pemrosesan, misalnya memastikan setiap transaksi bernilai positif sebelum laporan disusun. Satu operator pembanding yang sering berguna bersama kelompok ini adalah SequenceEqual, yang menguji dua urutan memiliki isi dan urutan yang sama persis.