草庐IT

my_enum_convert

全部标签

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# - 通过 ref : cannot convert from 'Foo' to 'ref IFoo' 传递实现

这个问题在这里已经有了答案:Whydoesn't'ref'and'out'supportpolymorphism?(10个答案)关闭3年前。有人可以向我解释为什么这在C#中是不正确的吗:namespaceNamespaceA{publicclassClassA{publicinterfaceIInterfaceA{StringProperty{set;}}}}namespaceNamespaceB{publicclassClassB{publicclassImpA:NamespaceA.ClassA.IInterfaceA{privateStringmProperty;publicSt

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# - 为什么 <enum> 的集合无法转换为 <int?>?

为什么enum的集合无法转换为int?enumTest{A=1,B=2};int?x=(int?)Test.A;//Validvarcollection1=new[]{Test.A}.Cast().ToList();//InvalidCastExceptionhasthrown(Specifiedcastisnotvalid.)varcollection2=new[]{Test.A}.Cast().ToList(); 最佳答案 Cast方法只能进行装箱/拆箱转换、引用转换以及枚举类型与其基础整数类型之间的转换。不过,拆箱必须是正确的

c# - Convert.ToDouble ("4089.90") 输出 40.899,00 为什么?

我正在开发一个使用数字精度的软件,但我遇到了这个问题,当我将一个字符串转换为double时,它​​会输出不同的文化。例如我使用Convert.ToDouble("4089.90");//itoutputs40.899,00很奇怪,因为在我的电脑上它工作正常,但在客户端的电脑上(在区域设置中具有相同的文化)向我显示了后者的输出。我知道我可以使用修复它Convert.ToDouble("4089.90",System.Globalization.CultureInfo.InvariantCulture);但程序中有很多代码使用“Convert.ToDouble”,我不想全部更改,另一方面我

c# - 是否可以创建通用的 Int-to-Enum 转换器?

我想说如果int值等于(int)MyEnum.Value,则将其解析为True我知道我可以制作一个返回(MyEnum)intValue的Converter,但是我必须为我在DataTriggers中使用的每个Enum类型制作一个转换器.是否有一种通用的方法来创建可以提供这种功能的转换器? 最佳答案 可以以可重用的方式在枚举值和它们的基础整数类型之间创建一个转换器——也就是说,您不需要为每个枚举类型定义一个新的转换器。为此,Convert和ConvertBack提供了足够的信息。publicsealedclassBidirection

c# - c#除了enum还能用什么

所以目前有一个用于应用程序状态的枚举。但是,将它用于ui时感觉有些不对劲。填充下拉列表时整数和字符串之间的许多转换。我可以使用扩展方法或类型转换器并继续使用枚举,如果枚举中有多个单词,这将很有帮助。我想在我深入挖掘之前,我会问一下是否可以填充一个可能的洞。谢谢。 最佳答案 我的团队在我们最近的项目中遇到了这个问题。我们保留了枚举,​​因为它们是用于已知常量值的有限列表的东西,但我们做了一些事情使它们对开发人员更友好:我们用包含每个枚举常量的“友好名称”的[Description()]属性修饰枚举值。我们创建了一个GetDescrip

c# - LINQ to Entities 中的 Enum.HasFlag?

我有一面旗帜,例如[Flags]publicenumDaysOfTheWeek{Monday=1,Tuesday=2,Wednesday=4,Thursday=8,Friday=16,Saturday=32,Sunday=64}如果我想使用Linq基于包含特定标志的变量进行过滤,我可以尝试使用Enum.HasFlag在lambda语句中过滤多个标志,例如DaysOfWeekweekendFilter=DaysOfTheWeek.Saturday|DaysOfTheWeek.Sunday;varweekends=allDays.Where(d=>d.DayOfWeek.HasFlag(w

c# - Func<T, TResult> 和 Converter<TInput, TOutput> 有什么区别?

查看Func和Converter委托(delegate)的签名,publicdelegateTResultFunc(Targ);publicdelegateTOutputConverter(TInputinput);我很难看出两者之间的区别。当然,如果我们重命名泛型类型参数,它们本质上是一样的吗?有人能解释一下为什么它们都存在吗? 最佳答案 没有区别。它们存在的原因是历史性的。Converter在.NET2.0中已经可用,但整个范围Func稍后添加了委托(delegate)类型。为了保持一致性,Func已添加,但它与Converte