C#中通过位运算实现多个状态的判断
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StateMachine { class Program { static void Main(string[] args) { //输出十进制 - 二进制的值 Console.WriteLine(State.A + " - " + Program.TwoNum(Convert.ToString(State.A, 2))); Console.WriteLine(State.B + " - " + Program.TwoNum(Convert.ToString(State.B, 2))); Console.WriteLine(State.C + " - " + Program.TwoNum(Convert.ToString(State.C, 2))); //创建一个变量,添加三个状态 short mark = 0; mark |= State.A; mark |= State.B; mark |= State.C; Console.WriteLine("\n"); Console.WriteLine("mark的值: " + mark + " - " + Program.TwoNum(Convert.ToString(mark, 2))); Console.WriteLine("\n状态显示"); //判断一个值里面一共有几个状态 if ((mark & State.A) > 0) Console.WriteLine("拥有A的状态"); if ((mark & State.B) > 0) Console.WriteLine("拥有B的状态"); if ((mark & State.C) > 0) Console.WriteLine("拥有C的状态"); if ((mark & State.D) > 0) Console.WriteLine("拥有D的状态"); Console.ReadLine(); } //默认在后面补上7个0 public static string TwoNum(string s) { string temp = ""; for (int i = s.Length; i < 8; i++) { temp += "0"; } s = s.Insert(0, temp); return s; } } /// <summary> /// 状态 /// </summary> public class State { public static short A = 1 << 0; public static short B = 1 << 1; public static short C = 1 << 2; public static short D = 1 << 3; public static short E = 1 << 4; } }
如果你感兴趣,你可以把你妹妹介绍给我