草庐IT

C# 7.3 枚举约束 : Why can't I use the nullable enum?

既然我们有了枚举约束,为什么编译器不允许我编写这段代码?publicstaticTResult?ToEnum(thisStringvalue,TResult?defaultValue)whereTResult:Enum{returnString.IsNullOrEmpty(value)?defaultValue:(TResult?)Enum.Parse(typeof(TResult),value);}编译器说:ErrorCS0453Thetype'TResult'mustbeanon-nullablevaluetypeinordertouseitasparameter'T'intheg

c# - C# 中 Enum.Parse 的通用版本

我经常想知道为什么C#还没有实现通用Enum.Parse假设我有enumMyEnum{Value1,Value2}我希望从一个XML文件/数据库条目创建一个枚举。MyEnumval=(MyEnum)Enum.Parse(typeof(MyEnum),"value1",true);难道不能像这样实现吗MyEnumcal=Enum.Parse("value1");这似乎是一个小问题,但它似乎是一个被忽视的问题。有什么想法吗? 最佳答案 它已经在.NET4中实现了;)看看here.MyEnumcal;if(!Enum.TryParse("

c# - 在不声明所有可能的组合的情况下打开 Enum(带有 Flags 属性)?

我如何打开一个设置了flags属性(或更准确地说用于位操作)的枚举?我希望能够在与声明的值相匹配的开关中命中所有情况。问题是如果我有以下枚举[Flags()]publicenumCheckType{Form=1,QueryString=2,TempData=4,}我想使用这样的开关switch(theCheckType){caseCheckType.Form:DoSomething(/*Sometypeofcollectionispassed*/);break;caseCheckType.QueryString:DoSomethingElse(/*Someothertypeofcoll

c# - Enum.TryParse 对任何数值返回 true

我遇到了使用Enum.TryParse时未预料到的行为。如果我有一个枚举:publicenumMyEnum{ValueA,ValueB,ValueC}然后我将数值(作为字符串)传递给Enum.TryParse,例如:MyEnumoutputEnum;boolresult=Enum.TryParse("1234",outoutputEnum);尽管字符串“1234”不是一个可能的值,结果将返回为真,我的outputEnum的值为1234。有什么办法可以避免这种行为?我正在尝试编写一个将任意字符串输入作为枚举处理的函数,这在我的错误输入检测中引发了一些麻烦。 最

c# - Enum.GetValues() 返回类型

我已阅读说明“给定枚举类型,System.Enum的GetValues()方法将返回给定枚举基本类型的数组”的文档,即int、byte等。但是,我一直在使用GetValues()方法,而我一直返回的只是一个枚举类型的数组。我错过了什么吗?publicenumResponse{Yes=1,No=2,Maybe=3}foreach(varvalueinEnum.GetValues(typeof(Response))){vartype=value.GetType();//typeisalwaysoftypeEnumnotoftheenumbasetype} 最佳答

c# - Enum.Parse(),肯定是一种更简洁的方法?

假设我有一个枚举,publicenumColours{Red,Blue}我能看到的解析它们的唯一方法是做类似的事情:stringcolour="Green";varcol=(Colours)Enum.Parse(typeOf(Colours),colour);这将抛出System.ArgumentException因为“Green”不是Colours枚举的成员。现在我真的很讨厌在try/catch中包装代码,有没有比我迭代每个Colours枚举,并与进行字符串比较的更简洁的方法呢?颜色? 最佳答案 使用Enum.IsDefined(

c# - 如何从 System.Enum 转换为基本整数?

我想创建一个通用方法,用于将任何System.Enum派生类型转换为其相应的整数值,无需强制转换,最好不解析字符串。例如,我想要的是这样的://Trivialexample,notactuallywhatI'mdoing.classConverter{intToInteger(System.EnumanEnum){(int)anEnum;}}但这似乎不起作用。Resharper报告您无法将类型为“System.Enum”的表达式转换为类型“int”。现在我想出了这个解决方案,但我宁愿有更高效的东西。classConverter{intToInteger(System.EnumanEnu

c# - 选择 Enum 类型的默认值而无需更改值

在C#中,是否可以用属性修饰Enum类型或做一些其他事情来指定默认值应该是什么,而无需更改值?无论出于何种原因,所需的数字可能是一成不变的,并且仍然可以控制默认值会很方便。enumOrientation{None=-1,North=0,East=1,South=2,West=3}Orientationo;//Is'North'bydefault. 最佳答案 enum(事实上,任何值类型)的默认值是0——即使它不是该enum的有效值。无法更改。 关于c#-选择Enum类型的默认值而无需更改

go - 如何在 Go 中打印 "enum"的字符串表示形式?

我查看了各种官方资源以了解如何执行此操作,但我找不到。假设您有以下枚举(我知道golang没有传统意义上的枚举):packagemainimport"fmt"typeLogLevelintconst(OffLogLevel=iotaDebug)varlevelLogLevel=Debugfuncmain(){fmt.Printf("LogLevel:%s",level)}我可以用上面的%s得到最接近的值,它给了我:LogLevel:%!s(main.LogLevel=1)我想要:LogLevel:Debug谁能帮帮我? 最佳答案 您

mysql - 如何在 MySql 中选择 ENUM 类型的值数?

我需要从下表中选择一行,但问题是$row['city']中的值是该值的文本表示,我需要它的编号(Toronto=2).(与我们INSERTINTO时相同,我们使用值数字而不是文本)请求表结构:req_idINTunameVARCHAR(30)cityENUM('NewYork','Toronto','LasVegas') 最佳答案 您只需要将您的城市强制转换为数字上下文,从finemanual:IfyouretrieveanENUMvalueinanumericcontext,thecolumnvalue'sindexisretur