Boole mantıksal işleçleri (C# başvurusu)

Aşağıdaki işleçler bool işlenenleriyle mantıksal işlemler gerçekleştirmektedir:

  • Birli (mantıksal olumsuzlama) işleci.
  • İkili (mantıksal AND), (mantıksal OR) ve (mantıksal dışlı OR) işleçleri. Bu işleçler her zaman her iki işleneni de değerlendirir.
  • İkili (koşullu mantıksal AND) ve (koşullu mantıksal OR) işleçleri. Bu işleçler yalnızca gerekli olduğu zaman sağ işleneni değerlendirir.

İntegral sayısal türlerin işlenenleri için , ve |işleçleri ^ bitsel mantıksal işlemler gerçekleştirmektedir. Daha fazla bilgi için bkz. Bitwise ve shift işleçleri.

Mantıksal olumsuzlama işleci !

Birli ön ek ! işleci, işlenenin mantıksal olumsuzlamasını hesaplar. Başka bir ifadeyle, trueişlenen , ve olarak değerlendirilirsefalsefalse, işlenen olarak değerlendirilirse üretirtrue:

bool passed = false;
Console.WriteLine(!passed);  // output: True
Console.WriteLine(!true);    // output: False

C# 8.0'dan itibaren, birli sonek ! işleci !.

Mantıksal AND işleci &

işleci & , işlenenlerinin mantıksal AND'sini hesaplar. sonucu, hem hem x & y de true değerlendirmesi xy ise olarak değerlendirilir true. Aksi takdirde sonuç olur false.

işleci&, sol işlenen falsefalse olarak değerlendirilse bile her iki işleneni de değerlendirir; böylece işlem sonucu, sağ işlenenin değerinden bağımsız olarak olur.

Aşağıdaki örnekte işlecinin & sağ işleneni, sol işlenenin değerinden bağımsız olarak gerçekleştirilen bir yöntem çağrısıdır:

bool SecondOperand()
{
    Console.WriteLine("Second operand is evaluated.");
    return true;
}

bool a = false & SecondOperand();
Console.WriteLine(a);
// Output:
// Second operand is evaluated.
// False

bool b = true & SecondOperand();
Console.WriteLine(b);
// Output:
// Second operand is evaluated.
// True

Koşullu mantıksal AND işleci ayrıca işlenenlerinin mantıksal AND'sini de hesaplar, ancak sol işlenen olarak değerlendirilirse sağ işleneni değerlendirmez false.

İşleç, integral sayısal türlerinin işlenenleri için bit tabanlı mantıksal AND işlenenlerini hesaplar. Birli işleç & , &.

Mantıksal dış or işleci ^

işleci ^ , işlenenlerinin mantıksal XOR olarak da bilinen mantıksal dışlı OR'sini hesaplar. sonucu, x ^ y olarak değerlendirilirse x ve true olarak y değerlendirilirse falseveya olarak değerlendirilir x ve falsey olarak değerlendirilirtruetrue. Aksi takdirde sonuç olur false. Başka bir ifadeyle bool , işlenenler ^ için işleç eşitsizlik bool!=.

Console.WriteLine(true ^ true);    // output: False
Console.WriteLine(true ^ false);   // output: True
Console.WriteLine(false ^ true);   // output: True
Console.WriteLine(false ^ false);  // output: False

tam sayı sayısal türlerinin işlenenleri için işleç bit tabanlı mantıksal özel VEYA işlenenlerini hesaplar.

Mantıksal OR işleç |

işleci | , işlenenlerinin mantıksal OR'sini hesaplar. sonucu, veya x | ytrue değerlendirmesi xy ise olur true. Aksi takdirde sonuç olur false.

işleci|, sol işlenen truetrue olarak değerlendirilse bile her iki işleneni de değerlendirir; böylece işlem sonucu, sağ işlenenin değerinden bağımsız olarak olur.

Aşağıdaki örnekte işlecinin | sağ işleneni, sol işlenenin değerinden bağımsız olarak gerçekleştirilen bir yöntem çağrısıdır:

bool SecondOperand()
{
    Console.WriteLine("Second operand is evaluated.");
    return true;
}

bool a = true | SecondOperand();
Console.WriteLine(a);
// Output:
// Second operand is evaluated.
// True

bool b = false | SecondOperand();
Console.WriteLine(b);
// Output:
// Second operand is evaluated.
// True

Koşullu mantıksal OR işleci ayrıca işlenenlerinin mantıksal VEYA'sini de hesaplar, ancak sol işlenen olarak değerlendirilirse sağ işleneni değerlendirmez true.

İşleç, integral sayısal türlerinin işlenenleri için bit tabanlı mantıksal VEYA işlenenlerini hesaplar.

Koşullu mantıksal AND işleci &&

"Kısa devre" &&mantıksal AND işleci olarak da bilinen koşullu mantıksal AND işleci, işlenenlerinin mantıksal AND'sini hesaplar. sonucu, hem hem x && y de true değerlendirmesi xy ise olarak değerlendirilir true. Aksi takdirde sonuç olur false. , x olarak değerlendirilirse falsey değerlendirilmez.

Aşağıdaki örnekte işlecinin && sağ işleneni, sol işlenen olarak değerlendirilirse gerçekleştirilecek bir yöntem çağrısıdır false:

bool SecondOperand()
{
    Console.WriteLine("Second operand is evaluated.");
    return true;
}

bool a = false && SecondOperand();
Console.WriteLine(a);
// Output:
// False

bool b = true && SecondOperand();
Console.WriteLine(b);
// Output:
// Second operand is evaluated.
// True

Mantıksal AND işleci ayrıca işlenenlerinin mantıksal AND'sini de hesaplar, ancak her zaman her iki işleneni de değerlendirir.

Koşullu mantıksal OR işleç ||

"Kısa devre" ||mantıksal OR işleci olarak da bilinen koşullu mantıksal OR işleci, işlenenlerinin mantıksal OR'sini hesaplar. sonucu, veya x || ytrue değerlendirmesi xy ise olur true. Aksi takdirde sonuç olur false. , x olarak değerlendirilirse truey değerlendirilmez.

Aşağıdaki örnekte işlecinin || sağ işleneni, sol işlenen olarak değerlendirilirse gerçekleştirilecek bir yöntem çağrısıdır true:

bool SecondOperand()
{
    Console.WriteLine("Second operand is evaluated.");
    return true;
}

bool a = true || SecondOperand();
Console.WriteLine(a);
// Output:
// True

bool b = false || SecondOperand();
Console.WriteLine(b);
// Output:
// Second operand is evaluated.
// True

Mantıksal OR işleci ayrıca işlenenlerinin mantıksal VEYA'sını da hesaplar, ancak her zaman her iki işleneni de değerlendirir.

Null değere sahip Boole mantıksal işleçleri

İşleçler bool?bool? ve & işleçleri üç değerli mantığı aşağıdaki gibi destekler:

  • işleci & yalnızca true her iki işlenen de olarak değerlendirilirse üretir true. veya olarak x değerlendirilirse falsey , x & y üretir false (başka bir işlenen olarak değerlendirilse bilenull). Aksi takdirde, sonucu x & y olur null.

  • işleci | yalnızca false her iki işlenen de olarak değerlendirilirse üretir false. veya olarak x değerlendirilirse truey , x | y üretir true (başka bir işlenen olarak değerlendirilse bilenull). Aksi takdirde, sonucu x | y olur null.

Aşağıdaki tabloda bu semantikler yer almaktadır:

x y x&y x|y
true true true true
true yanlış yanlış true
true null null true
yanlış true yanlış true
yanlış yanlış yanlış yanlış
yanlış null yanlış null
null true null true
null yanlış yanlış null
null null null null

Bu işleçlerin davranışı, null yapılabilir değer türleriyle tipik işleç davranışından farklıdır. Genellikle, bir değer türünün işlenenleri için tanımlanan bir işleç, karşılık gelen Nullable değer türünün işlenenleri ile de kullanılabilir. Böyle bir işleç, işlenenlerinin herhangi biri olarak null değerlendirilirse üretir null . &Ancak, ve | işleçleri işlenenlerden biri olarak null değerlendirilse bile null olmayan bir üretebilir. Null yapılabilir değer türleriyle operatör davranışı hakkında daha fazla bilgi için, Nullable değer türleri makalesinin yükseltilmemiş işleçleri bölümüne bakın.

Ayrıca, ! Aşağıdaki örnekte gösterildiği gibi işlenenlerle birlikte bool? ve ^ işleçlerini kullanabilirsiniz:

bool? test = null;
Display(!test);         // output: null
Display(test ^ false);  // output: null
Display(test ^ null);   // output: null
Display(true ^ null);   // output: null

void Display(bool? b) => Console.WriteLine(b is null ? "null" : b.Value.ToString());

Koşullu mantıksal işleçler && ve || işlenenleri desteklemez bool? .

Bileşik atama

Bir ikili işleci op için, formun bileşik atama ifadesi

x op= y

eşdeğerdir

x = x op y

xhariç yalnızca bir kez değerlendirilir.

&Aşağıdaki örnekte gösterildiği gibi, | , ve ^ işleçleri bileşik atamayı destekler:

bool test = true;
test &= false;
Console.WriteLine(test);  // output: False

test |= true;
Console.WriteLine(test);  // output: True

test ^= false;
Console.WriteLine(test);  // output: True

Not

Koşullu mantıksal işleçler && ve || bileşik atamayı desteklemez.

İşleç önceliği

Aşağıdaki liste, en yüksek öncelikten başlayarak mantıksal işleçleri en düşüğe göre sıralar:

  • Mantıksal Değilleme İşleci !
  • Mantıksal AND işleci &
  • Mantıksal dışlamalı OR işleci ^
  • Mantıksal OR işleci |
  • Koşullu mantıksal AND işleci &&
  • Koşullu mantıksal OR işleci ||

İşleç önceliğine göre uygulanan değerlendirmenin sırasını değiştirmek için parantezleri () kullanın:

Console.WriteLine(true | true & false);   // output: True
Console.WriteLine((true | true) & false); // output: False

bool Operand(string name, bool value)
{
    Console.WriteLine($"Operand {name} is evaluated.");
    return value;
}

var byDefaultPrecedence = Operand("A", true) || Operand("B", true) && Operand("C", false);
Console.WriteLine(byDefaultPrecedence);
// Output:
// Operand A is evaluated.
// True

var changedOrder = (Operand("A", true) || Operand("B", true)) && Operand("C", false);
Console.WriteLine(changedOrder);
// Output:
// Operand A is evaluated.
// Operand C is evaluated.
// False

Öncelik düzeyine göre sıralanan C# işleçlerinin tüm listesi için c# işleçleri makalesinin operatör önceliği bölümüne bakın.

Operatör overloadability

Kullanıcı tanımlı bir tür, &| ,, ve ^ işleçlerini aşırı yükleyebilir. İkili işleç aşırı yüklendiğinde, karşılık gelen bileşik atama işleci de örtük olarak aşırı yüklenmiştir. Kullanıcı tanımlı bir tür, bileşik atama işlecini açıkça aşırı yükleyemez.

Kullanıcı tanımlı bir tür koşullu mantıksal işleçleri && ve ' i || aşırı yükleyemez. Ancak, Kullanıcı tanımlı bir tür true ve false işleçlerini ve ya | da işlecini belirli bir şekilde && aşırı yükleiyorsa, veya || işlemi sırasıyla bu türün işlenenleri için değerlendirilebilir. Daha fazla bilgi için C# dil belirtimininKullanıcı tanımlı Koşullu mantıksal işleçler bölümüne bakın.

C# dili belirtimi

Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın:

Ayrıca bkz.