diff --git a/BitMaskTest/.vscode/launch.json b/BitMaskTest/.vscode/launch.json new file mode 100644 index 0000000..c56e81d --- /dev/null +++ b/BitMaskTest/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요. + // 기존 특성에 대한 설명을 보려면 가리킵니다. + // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요. + "version": "0.2.0", + "configurations": [ + { + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/bin/Debug/net7.0/BitMaskTest.dll", + "args": [], + "cwd": "${workspaceFolder}", + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/BitMaskTest/.vscode/tasks.json b/BitMaskTest/.vscode/tasks.json new file mode 100644 index 0000000..ef008cf --- /dev/null +++ b/BitMaskTest/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/BitMaskTest.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/BitMaskTest.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/BitMaskTest.csproj" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/BitMaskTest/BitMaskTest.csproj b/BitMaskTest/BitMaskTest.csproj index c73e0d1..120e38c 100644 --- a/BitMaskTest/BitMaskTest.csproj +++ b/BitMaskTest/BitMaskTest.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net7.0 diff --git a/BitMaskTest/PopupButtonMask.cs b/BitMaskTest/PopupButtonMask.cs index 37db872..1b2eb7f 100644 --- a/BitMaskTest/PopupButtonMask.cs +++ b/BitMaskTest/PopupButtonMask.cs @@ -4,42 +4,55 @@ using System.Text; namespace BitMaskTest { - [Flags] - public enum ButtonMask - { - None = 0x00, - Remove = 0x01, - LevelUp = 0x02, - Change = 0x04, - Reset = 0x08, - Cancel = 0x10, - } - - class PopupButtonMask - { - public ButtonMask Mask { get; set; } = ButtonMask.None; - - public List GetButtons() - { - List buttons = new List(); - foreach (ButtonMask flag in Enum.GetValues(typeof(ButtonMask))) - { - if (checkMask(flag)) - buttons.Add(flag); - } - - if (buttons == null || buttons.Count < 1) - return null; - - return buttons; - } - - private bool checkMask(ButtonMask compareTarget) - { - int flags = (int)this.Mask; - int flag = (int)compareTarget; - - return (flags & flag) != 0; - } - } + // [Flags] + // public enum ButtonMask + // { + // None = 0x00, + // Remove = 0x01, + // LevelUp = 0x02, + // Change = 0x04, + // Reset = 0x08, + // Cancel = 0x10, + // } + + [Flags] + public enum ButtonMask + { + None = 0, + Remove = 1 << 0, + LevelUp = 1 << 1, + Change = 1 << 2, + Reset = 1 << 3, + Cancel = 1 << 4, + + All = int.MaxValue + } + + class PopupButtonMask + { + public ButtonMask Mask { get; set; } = ButtonMask.None; + + public List GetButtons() + { + List buttons = new List(); + foreach (ButtonMask flag in Enum.GetValues(typeof(ButtonMask))) + { + if (checkMask(flag)) + buttons.Add(flag); + } + + if (buttons == null || buttons.Count < 1) + return null; + + return buttons; + } + + public bool checkMask(ButtonMask compareTarget) + { + int flags = (int)this.Mask; + int flag = (int)compareTarget; + + return (flags & flag) != 0; + } + } } diff --git a/BitMaskTest/Program.cs b/BitMaskTest/Program.cs index fa13804..3fa06a1 100644 --- a/BitMaskTest/Program.cs +++ b/BitMaskTest/Program.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; namespace BitMaskTest { - /* + /* * AND &: 비트가 모두 1일 때 1 반환 * 1011 & 1001 = 1001 * @@ -20,20 +20,20 @@ namespace BitMaskTest * 001011 << 2 = 101100 * 001011 >> 2 = 000010 */ - class Program - { - static void Main(string[] args) - { - PopupButtonMask popupButton = new PopupButtonMask(); - popupButton.Mask = ButtonMask.LevelUp | ButtonMask.Reset | ButtonMask.Cancel | ButtonMask.Remove | ButtonMask.Change; + class Program + { + static void Main(string[] args) + { + PopupButtonMask popupButton = new PopupButtonMask(); + popupButton.Mask = ButtonMask.LevelUp | ButtonMask.Cancel | ButtonMask.Remove | ButtonMask.Change; - List buttons = popupButton.GetButtons(); - foreach (ButtonMask item in buttons) - { - Console.WriteLine(item); - } + System.Console.WriteLine(popupButton.checkMask(ButtonMask.All)); - Console.ReadKey(); - } - } + // List buttons = popupButton.GetButtons(); + // foreach (ButtonMask item in buttons) + // { + // Console.WriteLine(item); + // } + } + } }