草庐IT

c# - 如何确定枚举值是否具有一个或多个与之比较的值?

我有一个标有[Flags]属性的枚举,如下所示:[Flags]publicenumTag:int{None=0,PrimaryNav=1,HideChildPages=2,HomePage=4,FooterLink=8}在我的站点地图的站点地图节点上,我将标签组合的int值存储为一个属性。我需要做的是检查一个节点是否有一个或多个标签中的任何一个,例如标签.PrimaryNav|标记.HomePage.我正在努力使用必要的bool逻辑来确定枚举值是否具有一个或多个与之进行比较的值。如果不清楚,请见谅。如有必要,我可以提供更多信息。 最佳答案

C#:有没有办法对枚举进行分类?

给定以下枚举:publicenumPosition{Quarterback,Runningback,DefensiveEnd,Linebacker};是否可以对命名常量进行分类,以便我可以将“Quarterback”和“Runningback”标记为进攻位置,将“DefensiveEnd”和“Linebacker”标记为防守位置? 最佳答案 您可以使用属性:publicenumPosition{[OffensivePosition]Quarterback,[OffensivePosition]Runningback,[Defensi

c# - "or"应该与 .Net4 Hasflags 一起工作 : enum. HasFlag(AccessRights.Read | AccessRights.Write)

我正在尝试新的HasFlags功能,并想知道以下应该工作:enum.HasFlag(AccessRights.Read|AccessRights.Write)...因为好像没有...DBAccessRightsrights=(DBAccessRights)permission.PermissionFlags;if(rights.HasFlag(DBAccessRights.WikiMode)){//works}if(rights.HasFlag(DBAccessRights.WikiMode|DBAccessRights.CreateNew)){//Doesn'twork}DBAcce

C#,标志枚举,用于查找标志的通用函数

我想要一个可以与任何Flags样式枚举一起使用的通用函数,以查看是否存在标志。这不会编译,但如果有人有建议,我将不胜感激。publicstaticBooleanIsEnumFlagPresent(Tvalue,TlookingForFlag)whereT:enum{Booleanresult=((value&lookingForFlag)==lookingForFlag);returnresult;} 最佳答案 不,您不能使用C#泛型执行此操作。但是,您可以做:publicstaticboolIsEnumFlagPresent(Tv

c# - 枚举上的 DataTrigger 作为 WPF 样式上的触发器值

因此,简而言之,这就是我要尝试做的事情,我将从代码开始,它很可能是有意义的。枚举定义:namespaceSEL.MfgTestDev.ESS.ViewModel{publicenumUnitStatusModel{Indeterminate,Pass,Fail,Warning,}}我是不是缺少了一block来完成这项工作?我发现了一些关于依赖于对象数据源的枚举的WPF文章,但我不太喜欢这种解决方案,难道我不能在这里做一些更简单的事情吗? 最佳答案 我找到了解决方案,但它很愚蠢。样式被设计为控件的一种可视化模板,但它们被设计为可视化实

c# - 在数据库表中保留枚举

我有一个有状态的订单(在代码中是一个枚举)。问题是如何坚持这一点。我可以:将字符串保存在字段中,然后在数据检索时映射回枚举。将其保存为整数,然后在数据检索时映射回枚举。为枚举值创建单独的表并对数据检索进行连接。想法? 最佳答案 如果这是一个固定列表(看起来确实如此,否则您不应该将其存储为枚举),我不会使用#1。使用#3而不是#2的主要原因是为了便于使用自助服务查询实用程序。但是,我实际上会使用#2的变体:将值存储为整数并在数据检索时映射到枚举。但是,还要创建一个表示枚举类型的表,将值作为PK,将名称作为另一列。这样一来,使用您的代码

C# int 到标志枚举

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C#inttoenumconversion是否可以通过某种方式将int转换为标志组合枚举?所以,如果[Flags]publicenumFoo{a=0x80,b=0x40,c=...,...h=0x1,i=0};是否可以(或以某种方式可能)做FoofooInstance=(Foo)6;所以fooInstance会是00000110?谢谢!

c# - 为什么我可以将无效值解析为 .NET 中的枚举?

为什么这是可能的?是错误吗?usingSystem;publicclassInvalidEnumParse{publicenumNumber{One,Two,Three,Four}publicstaticvoidMain(){stringinput="761";Numbernumber=(Number)Enum.Parse(typeof(Number),input);Console.WriteLine(number);//outputs761}} 最佳答案 这正是枚举在.NET中的工作方式。枚举不是一组限制性的值,它实际上只是一组数

c# - 为什么 typeof(System.Enum).IsEnum = false?

据我们所知System.Enum是所有枚举的基础,但我想知道为什么反射说它不是枚举本身?Console.WriteLine(typeof(System.Enum).IsEnum)//saysitisfalse我无法理解其中的逻辑,所以System.Enum不是枚举,但是从它派生的所有东西都是枚举?当我看到msdn时,我第二次震惊了。这是一个类publicabstractclassEnum:ValueType,IComparable,IFormattable,IConvertible所以Enum是一个类,但是它是值类型(派生自特殊的ValueType类,它将枚举作为值类型)并且是所有枚举

c# - 在枚举中明确定义标志组合

我正在考虑实现一个定义游戏对象状态的枚举,我想知道我是否可以直接在枚举的定义中使用标志,而不是将对象的状态定义为标志的集合,这并不容易,状态机中使用的状态的预定义全局名称。例如,假设有5种状态:PreActivation(已创建但未开始;即futurewave中的敌人)、Active(当前正在使用;即屏幕上的敌人正在攻击您)、Paused(不再活跃,但可能会重新激活;即如果玩家使用时间卡住能力,则为敌人),DeActivated(已完成使用但仍在游戏世界中的对象;即死后遗体的敌人,如毁灭战士1和2)和ToRemove(预定要从游戏中移除的对象;即在您清除一个级别并移动到下一个级别后的敌