第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算 Enum 參數(shù)的數(shù)量

計算 Enum 參數(shù)的數(shù)量

C#
手掌心 2023-09-16 16:13:23
我是 C# 中枚舉的新手。我將多個枚舉值作為參數(shù)傳遞給方法。在方法內(nèi)部我想知道我有什么價值。讓我解釋。Class A{        [Flags]        public enum days        {            sunday =1,            monday =2,            tuesday= 4        }static void Main(string[] args)        {            dummy(days.sunday|days.monday);            dummy(days.sunday);        }public static void dummy(days Daysofweek)        {            if(\* Daysofweek is oly sunday*/){/*some function*/}            else if(\* Daysofweek is sunday and monday*/){/*some other  function*/}            Console.WriteLine(Daysofweek.ToString());        }}'''我想要實現(xiàn)的只是“如果參數(shù)中只有一個值,則做某事,否則,如果有多個值,則做其他事情”。
查看完整描述

5 回答

?
胡說叔叔

TA貢獻1804條經(jīng)驗 獲得超8個贊

我想要實現(xiàn)的只是“如果參數(shù)中只有一個值,則做某事,否則,如果有多個值,則做其他事情”。


由于Flags值中是單個位,因此是 2 的冪,因此您可以使用


uint v; // we want to see if v is a power of 2

bool f; // the result goes here?


f = (v & (v - 1)) == 0;

檢查該值是否為 2 的冪,如果不是,則設(shè)置了多個標(biāo)志。

但請記住這一點

請注意,此處 0 被錯誤地視為 2 的冪。

public static void dummy(days Daysofweek)

{

? ? int val = (int) Daysofweek;

? ? bool hasMultipleFlagsSet = val != 0 && (val & (val - 1)) == 0;


? ? if(hasMultipleFlagsSet){/*some function*/}

? ? else {/*some other? function*/}

? ? Console.WriteLine(Daysofweek.ToString());

}


查看完整回答
反對 回復(fù) 2023-09-16
?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

這是一個通用的解決方案:

public static int CountFlags( Enum days )

{

? ? int flagsSet = 0;

? ? foreach( var value in Enum.GetValues( days.GetType() ) )

? ? {

? ? ? ? if( days.HasFlag( (Enum)value ) )

? ? ? ? {

? ? ? ? ? ? ++flagsSet;

? ? ? ? }

? ? }


? ? return flagsSet;

}


查看完整回答
反對 回復(fù) 2023-09-16
?
LEATH

TA貢獻1936條經(jīng)驗 獲得超7個贊

使用HasFlag

using System;


[Flags] public enum Pets {

? ?None = 0,

? ?Dog = 1,

? ?Cat = 2,

? ?Bird = 4,

? ?Rabbit = 8,

? ?Other = 16

}


public class Example

{

? ?public static void Main()

? ?{

? ? ? Pets[] petsInFamilies = { Pets.None, Pets.Dog | Pets.Cat, Pets.Dog };

? ? ? int familiesWithoutPets = 0;

? ? ? int familiesWithDog = 0;


? ? ? foreach (var petsInFamily in petsInFamilies)

? ? ? {

? ? ? ? ?// Count families that have no pets.

? ? ? ? ?if (petsInFamily.Equals(Pets.None))

? ? ? ? ? ? familiesWithoutPets++;

? ? ? ? ?// Of families with pets, count families that have a dog.

? ? ? ? ?else if (petsInFamily.HasFlag(Pets.Dog))

? ? ? ? ? ? familiesWithDog++;

? ? ? }

? ? ? Console.WriteLine("{0} of {1} families in the sample have no pets.",?

? ? ? ? ? ? ? ? ? ? ? ? familiesWithoutPets, petsInFamilies.Length);? ?

? ? ? Console.WriteLine("{0} of {1} families in the sample have a dog.",?

? ? ? ? ? ? ? ? ? ? ? ? familiesWithDog, petsInFamilies.Length);? ?

? ?}

}

// The example displays the following output:

//? ? ? ?1 of 3 families in the sample have no pets.

//? ? ? ?2 of 3 families in the sample have a dog.


查看完整回答
反對 回復(fù) 2023-09-16
?
波斯汪

TA貢獻1811條經(jīng)驗 獲得超4個贊

轉(zhuǎn)換為整數(shù),然后計算設(shè)置為 1 的位數(shù):


        public enum DAYS

        {

            sunday =1,

            monday =2,

            tuesday= 4

        }

        static void Main(string[] args)

        {

            DAYS days =  DAYS.sunday | DAYS.monday;

            int numDays = CountDays(days);


        }


        static int CountDays(DAYS days)

        {

            int number = 0;

            for(int i = 0; i < 32; i++)

            {

                number += ((uint)days & (1 << i)) == 0 ? 0 : 1;

            }

            return number;

        }


查看完整回答
反對 回復(fù) 2023-09-16
?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

我想要實現(xiàn)的只是“如果參數(shù)中只有一個值,則做某事,否則,如果有多個值,則做其他事情”。

假設(shè)您沒有向枚舉添加任何“組合”命名值(例如,您沒有Weekend預(yù)先設(shè)置為 的成員Sunday|Saturday),您可以使用Enum.GetName

對于枚舉的命名成員以及null多個成員的任意組合,它將返回一個非空字符串。


查看完整回答
反對 回復(fù) 2023-09-16
  • 5 回答
  • 0 關(guān)注
  • 222 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號