栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何遍历具有标志的Enum的值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何遍历具有标志的Enum的值?

回到几年后,有了更多的经验,我对单比特值(从最低比特到最高比特)的最终回答是Jeff Mercado内部例程的一个细微变化:

public static IEnumerable<Enum> GetUniqueFlags(this Enum flags){    ulong flag = 1;    foreach (var value in Enum.GetValues(flags.GetType()).Cast<Enum>())    {        ulong bits = Convert.ToUInt64(value);        while (flag < bits)        { flag <<= 1;        }        if (flag == bits && flags.HasFlag(value))        { yield return value;        }    }}

似乎可行,并且尽管有几年前我的反对,但我在这里使用HasFlag,因为它比使用按位比较更易读,并且速度差异对于我将要执行的操作无关紧要。(从那时起,他们完全有可能提高了HasFlags的速度,据我所知……我还没有测试。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号