TOC
Summary
What is System.Flags?

Prerequisites
- C# 8
- .NET Core v3.1
- Windows 10 v21H1
Flags enum
In Programming C# 8.0 (プログラミングC# 第8版), it give an example about flags enum at P182. See 例3-100
.
[System.Flags]
public enum Ingredients
{
Eggs = 0b1,
Bacon = 0b10,
Sausages = 0b100,
Mushrooms = 0b1000,
Tomato = 0b1_0000,
BlackPudding = 0b10_0000,
BakedBeans = 0b100_0000,
TheFullEnglish = 0b111_1111
}
I’ll try to use Japanese stamp as example for learning.
using System;
namespace Hoge1
{
[System.Flags]
public enum 判子
{
None = 0,
課長 = 0b1,
部長 = 0b10,
本部長 = 0b100,
社長 = 0b1000,
}
class Program
{
static void Main(string[] args)
{
判子 stamp = 判子.None;
Console.WriteLine("({0})", stamp);
# Set a bit flag.
stamp |= 判子.課長;
Console.WriteLine("({0})", stamp);
stamp |= 判子.部長 | 判子.本部長;
Console.WriteLine("({0})", stamp);
# Remove a bit flag.
stamp &= ~判子.本部長;
Console.WriteLine("({0})", stamp);
stamp |= 判子.本部長;
Console.WriteLine("({0})", stamp);
stamp |= 判子.社長;
Console.WriteLine("({0})", stamp);
# Remove a bit flag.
if (stamp.HasFlag(判子.社長 | 判子.本部長 | 判子.部長 | 判子.課長))
{
Console.WriteLine("Yeah!!!!");
}
}
}
}