草庐IT

c# - 还有另一种测试枚举位域的方法吗?

将枚举与位字段一起使用时:enumReallyBigEnum{FirstChoice=0x01,AnotherOption=0x02}ReallyBigEnumflag=ReallyBigEnum.FirstChoice|ReallyBigEnum.AnotherOption;用于测试位的代码是:if((flag&ReallyBigEnum.AnotherOption)==ReallyBigEnum.AnotherOption){...}这看起来冗长且容易出错,因为需要重复该位正在测试中。如果有某种表达方式就好了:if(flag.IsSet(ReallyBigEnum.AnotherO

c# - 为什么 C# 允许无效的枚举值

我花了一段时间试图理解为什么我的WPF应用程序没有正确地数据绑定(bind)到枚举属性,这就是原因。staticvoidMain(string[]args){MyEnumx=0;Console.WriteLine(x.ToString());Console.ReadLine();}publicenumMyEnum{First=1,Second=2}本质上,问题是在我绑定(bind)到的类的构造函数中没有为枚举属性设置默认值,因此它默认为零。有什么方法可以告诉C#编译器我希望它只接受有效值(并且默认为最低值)?我不希望我的属性接受无效值,我不想为每个使用枚举的属性编写setter代码。

c# - 如何在值共享相同名称的枚举之间进行转换?

如果我想在两个Enum类型之间进行转换,我希望它们的值具有相同的名称,是否有一种简洁的方法,或者我必须这样做:enumcolours_a{red,blue,green}enumcolours_b{yellow,red,blue,green}staticvoidMain(string[]args){colours_aa=colours_a.red;colours_bb;//b=a;b=(colours_b)Enum.Parse(typeof(colours_b),a.ToString());}? 最佳答案 如果您对这两个枚举有严格的控

c# - Enum ToString 显示为数字

我有一个枚举privateenumTimeUnit{Day,Month,Year}我正在用以下内容填充描述:returnstring.Concat(unit,"(s)");其中单位是TimeUnit。大多数情况下,这工作正常并显示“天数”,但在特定服务器上它显示为“1(s)”什么会导致这种情况? 最佳答案 尝试使用Enum.GetName()它还有一个优点是safer因为它需要:您传入的值不为空。您传入的值属于枚举实际可以用作其基础类型的类型,或者属于枚举本身的类型。它对值使用GetType来检查这一点。

C# Enum.TryParse 解析无效数字字符串

C#.NET4.5,Windows10,我有以下枚举:privateenumEnums{A=1,B=2,C=3}这个程序的行为非常奇怪:publicstaticvoidMain(){Enumse;if(Enum.TryParse("12",oute)){Console.WriteLine("Parsed{0}",e);}else{Console.Write("Notparsed");}Console.ReadLine();}我希望TryParse方法的结果为假,但令我惊讶的是控制台显示“Parsed12”。在Watch窗口中甚至显示值为“12”,并且是Enums类型!对于我尝试过的任何

c# - 将 [Display(Name = "X")] 与枚举一起使用。 MVC3 ASP.Net 中的自定义 HtmlHelper

我正在使用来自另一个stackoverflow问题的代码片段:namespaceMvcHtmlHelpers{publicstaticclasshtmlHelpers{//////Radiobuttonfor:Adaptedtosupportenumlabelsfromdisplayattributes//////////////////publicstaticMvcHtmlStringRadioButtonForEnum(thisHtmlHelperhtmlHelper,Expression>expression){varmetaData=ModelMetadata.FromLamb

c# - 为什么受 'Enum' 约束的泛型类型在 C# 7.3 中不符合 'struct' 的条件?

如果我有一个带有struct约束的通用接口(interface),如下所示:publicinterfaceIStructwhereT:struct{}我可以像这样提供一个枚举作为我的类型T,因为enum满足struct约束:publicclassEnumIsAStruct:IStruct{}C#7.3添加了一个Enumconstraint.以下代码以前是非法的,现在可以编译:publicclassMCVE:IStructwhereT:struct,Enum{}然而,令我惊讶的是,以下代码无法编译:publicclassMCVE:IStructwhereT:Enum{}...有错误CS0

c# - 具有静态成员的枚举与常量/类?

我有一组特定于应用程序的代码(代码与其名称的一对一映射),并且我一直在C#中使用枚举来表示它们。我现在不确定是否有必要这样做。这些值永远不会改变,并且它们将始终与这些标签相关联:Workflow_Status_Complete=1Workflow_Status_Stalled=2Workflow_Status_Progress=3Workflow_Status_Complete=4Workflow_Status_Fail=5我应该使用枚举还是带有静态成员的类? 最佳答案 对我来说,int类型的静态成员似乎不如枚举。你失去了枚举的类型

c# - 为什么可以只使用别名来声明枚举而不是 .NET 类型?

这很完美..publicenumNodeType:byte{Search,Analysis,Output,Input,Audio,Movement}这会返回编译器错误...publicenumNodeType:Byte{Search,Analysis,Output,Input,Audio,Movement}使用反射时也会发生同样的情况...那么,有人知道为什么enum-base只是一个整型吗? 最佳答案 可能它只是一个不完整的编译器实现(虽然有记录)。从技术上讲,这也应该有效,但事实并非如此。usingx=System.Byte;p

c# - 使用 Linq-to-sql 在 sql-server 中存储枚举

如何使用linq-to-sql在sql-server中存储枚举?我最终在我的代码中进行了大量的int转换。一定有更好的方法。我错过了什么?sqlItem.enumValue=(int)myEnumValue;...myEnumValue=(MyEnumType)sqlItem.enumValueSQLServer或LINQ在数据库中将值存储为字符串还是整数并不重要,我只是想避免所有这些散布在我的代码中的类型转换。是否可以通过我的linq-to-sql-classes的扩展方法来解决?如果可以,那会是什么样子? 最佳答案 您可以在DB