MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


enumとビット演算を利用したステータス管理法
profile-img
投稿者: YMさん
投稿日:2024/05/02 13:54
更新日:
like-img
分類
技術
テクノロジー
全般
キャリア
設計
投稿内容

こんにちは。YMです。


今回はenumを使用して複数の状態を同時に管理する方法を復習がてらこちらに書いていこうと思います。


これを行うことによって複数の状態を同時に管理することができます。


まずはenumを使用して各状態を定義していきます。


[Flags]

public enum Status

{

    None = 0,

    State1 = 1 

    State2 = 2,

    State3 = 4,

    State4 = 8,

}

まずは各状態に2ⁿの数字を割り振っていきます。

この時に1<<0のような書き方もできこの場合は1を0ビットだけ左にシフトするという意味なので1が当てはまります

次に状態を追加していきます

private Status status = Status.None;

status |= Status.State1;


状態を追加するときはor文を使用します


次に状態を削除していきます

private Status status = Status.None;

status &= ~Status.State1;


状態を削除する場合は~を使用し否定したうえでAnd文を使用することで状態を削除することができます。


少し分かり辛いかもしれないので処理をわかりやすく図にしてみました


何もない状態からState3状態を付与するとき

0000 or 0100 = 0100(4)


State3が付与された状態にState1を付与するとき

0100 or 0001 = 0101(5)


上の状態からState2を付与しState3を削除するとき

0101 or 0010 = 0111 (7)

0111 and ~0100 = 0111 and 1011 = 0011(3)


このようにすることで複数の状態を同時に表現することができるということが分かったと思います。


以上、最後までご覧いただきありがとうございました。

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3