C#의 Enum 타입에 대해 공부하려고 Enum values as bit flags – using FlagsAttribute을 읽다가 본문이 아닌 댓글에서 쓸만한 정보를 찾았다. Jeremy Lundy라는 사람이 Flag 연산에 대해 잘 정리해놨다.
[Flags] public enum Column { None = 0, Priority = 1 << 0, Customer = 1 << 1, Contract = 1 << 2, Description = 1 << 3, Tech = 1 << 4, Created = 1 << 5, Scheduled = 1 << 6, DueDate = 1 << 7, All = int.MaxValue };[Flags] 애트리뷰트를 쓰면 이런 게 된다.
Column MyColumns = Column.Customer | Column.Contract;
Flag 값을 확인하려면:
if((MyColumns & Column.Customer) != 0)
특정 Flag 값을 주려면:
MyColumns |= Column.Tech;
특정 Flag 값을 제거하려면:
MyColumns &= ~Column.Tech;
특정 Flag 값을 반전시키려면:
MyColumns ^= Column.Contract;
Flag 값을 모두 제거하려면:
MyColumns = Column.None;
모든 Flag 값을 적용하려면:
MyColumns = Column.All;
한두 개의 Flag 값을 제외하고 전부 적용하려면:
MyColumns = Column.All ^ Column.Tech ^ Column.Status;
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
오호, 저런 식으로 비트연산 플래그 정의하는 것도 재밌네요.
유명한 블로그는 재밌는 게 본문보다 댓글이 더 길고 쓸만할 때가 많다는 것이죠. 예전에 CodeHorror의 글을 프린트한 적이 있는데, 댓글만 20쪽! 미리보기를 안 해봤더니 종이가 줄줄이 나오더군요. 큭.
유용한 글 잘봤습니다.
해당 내용으로 인해 원하는 것을 해결하게 되었네요 ^^
저는 외우는 걸 싫어해서 이렇게 정리해놓고 매번 제 글을 참조합니다.