在 C# 中切換布林變數

Bilal Shahid 2023年1月30日 2022年7月18日
  1. C# 中切換布林變數
  2. C# 中使用!`操作符來切換一個布林變數
  3. 為什麼不應該使用 ^ (XOR) 運算子來切換 C# 中的布林變數
在 C# 中切換布林變數

本文教我們如何在 C# 中切換布林變數。

C# 中切換布林變數

切換布林變數意味著在 truefalse 之間更改其值。一種簡單的方法是使用以下程式碼,也可以將其製成函式:

bool flag = false;
if (flag == false)
{
    flag = true;
}
else
{
    flag = false;
}

如果你要建立一個函式,那麼你可以執行以下操作:

static void toggle(ref bool flag)
{
    if (flag == false)
    {
        flag = true;
    }
    else
    {
        flag = false;
    }
}
static void Main(String[] args)
{
    bool flag = false;
    toggle(ref flag);
    Console.WriteLine(flag);
}

我們使用了 ref 關鍵字來確保 flag 引數是通過引用傳遞的,因此它在函式內部進行了更改。

輸出如下:

True

現在讓我們看看我們可以省略這些長程式碼行並將它們切換成更短的程式碼行的方法。

C# 中使用!`操作符來切換一個布林變數

以簡單語法進行此切換的一種方法是使用!運算子,它將值轉換為相反的值。

所以我們可以這樣寫:

flag = !flag;

如果 flagtrue,它將變為 False。如果它是 false,它將變為 True

輸出將是相同的:

True

完整的程式碼記錄在下面:

bool flag = false;
flag = !flag;
Console.WriteLine(flag);

為什麼不應該使用 ^ (XOR) 運算子來切換 C# 中的布林變數

XOR 運算子傾向於僅將布林變數的值轉換為。但是,它不適用於值已經為 false 的相反情況。

讓我們看一個下面的例子:

bool flag = true;
flag ^= flag;
Console.WriteLine(flag);

如果我們執行上面的程式碼,輸出將變為:

False

但是,如果 flag 設定為 false,則對其進行 XOR 不會將其更改為 True

bool flag = false;
//toggle(ref flag);
flag ^= flag;
Console.WriteLine(flag);

現在的輸出是:

False

為什麼?嗯,1true0false。將 flagtrue 的 XOR 放在一起,結果將變為 0false

但是,如果我們將 XOR 與 flag 設定為 false,結果仍將保持 0。如果你還記得 XOR 表,它就是這樣工作的:

異或表

Author: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

相關文章 - Csharp Boolean