C#에서 부울 변수 전환

Bilal Shahid 2024년2월15일
  1. C#에서 부울 변수 전환
  2. 사용 ! C#에서 부울 변수를 전환하는 연산자
  3. ^(XOR) 연산자를 사용하여 C#에서 부울 변수를 전환하면 안 되는 이유
C#에서 부울 변수 전환

이 기사에서는 C#에서 부울 변수를 토글하는 방법을 설명합니다.

C#에서 부울 변수 전환

부울 변수를 토글한다는 것은 truefalse 사이에서 값을 변경하는 것을 의미합니다. 이를 수행하는 한 가지 간단한 방법은 다음 코드를 사용하는 것입니다. 이 코드는 함수로도 만들 수 있습니다.

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;

flagtrue이면 False가 됩니다. 거짓이면 이 됩니다.

출력은 동일합니다.

True

전체 코드는 아래에 문서화되어 있습니다.

using System;

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

^(XOR) 연산자를 사용하여 C#에서 부울 변수를 전환하면 안 되는 이유

XOR 연산자는 bool 변수의 값이 true인 경우에만 false로 변환하는 경향이 있습니다. 그러나 값이 이미 false인 반대의 경우에는 작동하지 않습니다.

아래의 예를 살펴보겠습니다.

using System;

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

위를 실행하면 출력은 다음과 같습니다.

False

그러나 flagfalse로 설정된 경우 XOR을 적용해도 True로 변경되지 않습니다.

using System;

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

출력은 이제 다음과 같습니다.

False

왜요? 글쎄요, 1true이고 0false입니다. flagtrue인 XOR을 입력하면 결과는 0 또는 false가 됩니다.

그러나 flagfalse인 XOR을 입력하면 결과는 여전히 0으로 유지됩니다. XOR 테이블을 기억한다면 다음과 같이 작동합니다.

XOR 테이블

작가: 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