日期:2014-05-17  浏览次数:20640 次

Enum ?


        [Flags]
        public enum DinnerItems
        {
            None = 0,
            Entree = 1,
            Appetizer = 2,
            Side = 4,
            Dessert = 8,
            Beverage = 16,
            BarBeverage = 32
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //Enum.HasFlag 确定当前实例中是否设置了一个或多个位域。 

            DinnerItems myOrderA = DinnerItems.Appetizer | DinnerItems.Entree | DinnerItems.Beverage | DinnerItems.Dessert;
            DinnerItems myOrderB = DinnerItems.Appetizer | DinnerItems.Entree;

            bool a = (myOrderA & myOrderB) == myOrderB;
            bool b = myOrderA.HasFlag(myOrderB);

            Console.WriteLine(a); //Output:True
            Console.WriteLine(b); //Output:True

        }


Windows8 C#2013 Code 
问题:从某种程度上说 
(myOrderA & myOrderB) == myOrderB 是不是等效于 myOrderA.HasFlag(myOrderB); ?

------解决方案--------------------
本帖最后由 bdmh 于 2014-01-12 21:52:02 编辑
myOrderA & myOrderB != 0,包含myOrderB
------解决方案--------------------
注意,前提是有[Flags]这个attribute
------解决方案--------------------

是地。两者等同
------解决方案--------------------
ht