HOWTO · Csharp

在 C# 中切換布林變數

本文教我們在 C# 中切換布林變數的方法。

本頁內容

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

在 C# 中切換布林變數

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

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

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

using System;

class Program
{
   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;

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

輸出將是相同的:

True

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

using System;

class Program
{
   static void Main(string[] args)
   {
       bool flag = false;
       flag = !flag;
       Console.WriteLine(flag);
   }
}

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

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

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

using System;

class Program
{
   static void Main(string[] args)
   {
       bool flag = true;
       flag ^= flag;
       Console.WriteLine(flag);
   }
}

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

False

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

using System;

class Program
{
   static void Main(string[] args)
   {
       bool flag = false;
       flag ^= flag;
       Console.WriteLine(flag);
   }
}

現在的輸出是:

False

為什麼?嗯,1 是 true,0 是 false。將 flag 為 true 的 XOR 放在一起,結果將變為 0 或 false。

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

異或表