草庐IT

c# - 将多个枚举合并到主枚举列表中

是否可以将多个枚举组合在一起?以下是我希望看到的代码示例:enumPrimaryColors{Red,Yellow,Blue}enumSecondaryColors{Orange,Green,Purple}//Combinethemintoanewenumsomehowtoresultin:enumAllColors{Red,Orange,Yellow,Green,Blue,Purple}不管它们的顺序是什么,或者它们的支持数字是多少,我只希望能够将它们组合起来。对于上下文,这是为了让我正在处理的程序的多个类具有与其所做的相关联的枚举。我的主程序将读取每个支持类中可用的所有枚举,并制作

c# - 将枚举作为字符串存储在数据库中

我正在试验dapper。我有一个类,它有一个枚举,值作为字符串存储在数据库中。这适用于使用GenericEnumMapper的FluentNHibernate是否可以用Dapper做同样的事情? 最佳答案 目前还没有内置,这里有一个建议的解决方案:http://code.google.com/p/dapper-dot-net/issues/detail?id=24我们尚未决定。我喜欢可扩展类型转换器的想法目前最简洁的方法是定义影子属性,例如:classMyType{publicMyEnumMyEnum{get;privateset;

c# : Why is a cast needed from an Enum to an INT when used in a switch statement? ,枚举是整数

谁能告诉我为什么我需要从我的枚举中转换为Intswitch(Convert.ToInt32(uxView.SelectedValue)){case(int)ViewBy.Client:如果我删除强制转换(int),它会失败并提示我必须使用强制转换。这是我的枚举,枚举是整数....有人知道吗?publicenumViewBy{Client,Customer} 最佳答案 在C#中,enum不仅仅是数字。相反,它们是与类型相关联的数字或在上下文中具有名称的数字。要避免在case语句中进行强制转换,您可以在switch中进行强制转换:swi

c# - .NET 枚举类型实际上是可变值类型吗?

仔细观察枚举类型的字段,我惊讶地发现保存枚举特定实例实际值的“支持”实例字段不是private,正如我所想的,但是public.它不是readonly任何一个。(IsPublic真,IsInitOnly假。)许多人认为.NET类型系统中的“可变”值类型是“邪恶的”,那么为什么枚举类型(例如从C#代码创建的)就是这样?现在,事实证明,C#编译器有某种魔法可以否认公共(public)实例字段的存在(但见下文),但在例如PowerShell你可以这样做:prompt>$d=[DayOfWeek]::Thursdayprompt>$dThursdayprompt>$d.value__=6pro

c# - 对于从星期一开始的 DayOfWeek 枚举的每个循环?

我正在像这样遍历DayOfWeek枚举:foreach(DayOfWeekdayinEnum.GetValues(typeof(DayOfWeek))){//Addstufftoalist}我的问题是我希望我的枚举在星期一而不是星期日开始。我试过:CultureInfoci=Thread.CurrentThread.CurrentCulture;ci.DateTimeFormat.FirstDayOfWeek=DayOfWeek.Monday;但是foreach循环仍然从星期日开始。我该怎么做?我最后的想法是将结果列表重新排序为我想要的日期顺序但这将意味着更多的迭代。谢谢!

c# - 为什么默认枚举值是 0 而不是最小值?

在C#中将“0”作为枚举的默认值有什么意义?如果我声明以不同数字开头的枚举:enumColor{Blue=1,Green,Red,}然后varcolor=default(Color)-将返回“0”。我希望看到最小值。如果枚举的每个成员都对应于某个特定数字并且“0”不是有效值,则此行为可能会导致问题。 最佳答案 所有值类型(包括枚举)的默认值都是按位0。因此这意味着0始终是枚举的可能值,即使它没有明确定义也是如此。这是规范:Defaultvaluestable编辑:有关枚举类型的更多详细信息,请查看MSDN-enumenum是一种特殊

c# - 如何将字符转换为等效的 System.Windows.Input.Key 枚举值?

我想写一个这样的函数,publicSystem.Windows.Input.KeyResolveKey(charcharToResolve){//Codegoeshere,thatresolvesthecharToResolve//intotheKeyenumeratedvalue//(Forexamplewith'.'asthecharacterforKey.OemPeriod)}我知道我可以写一个巨大的Switch-case来匹配角色,但还有其他方法吗?问题是Key枚举的字符串可能与字符不匹配,因此Enum.IsDefined将不起作用有什么想法吗?更新:这是在Windows环境下

c# - 64 位枚举? C#

是否有可能获得一个枚举来保存64位值?我写了下面的代码并得到了这个编译错误消息。enumEnumTest{a=0x100000000};errorCS0266:Cannotimplicitlyconverttype'long'to'int'.Anexplicitconversionexists(areyoumissingacast?) 最佳答案 是的,您需要从long中“导出”它。publicenumMyEnum:long{} 关于c#-64位枚举?C#,我们在StackOverflow

c# - 如何通过枚举名称和值名称获取未知枚举的值?

很抱歉问这个问题,但我没有找到适合这个任务的解决方案:我有一个名为“myEnum”的枚举(函数不知道MyEnum)我需要获取myEnum的Value的int值例子:程序员将其枚举命名为“myEnum”:publicenummyEnum{foo=1,bar=2,}我的函数应该执行以下操作:通过字符串获取“myEnum”的“foo”的值函数应由以下人员打开:publicintGetValueOf(stringEnumName,stringEnumConst){}所以当程序员A打开它时:inta=GetValueOf("myEnum","foo");它应该返回1当程序员B有一个名为“mySp

c# - 'OR' 标记枚举中所有值的最佳方法?

给定枚举:[Flags]publicenummytest{a=1,b=2,c=4}我想出了两种方法来表示单个变量中的所有值:varOR1=(mytest)Enum.GetNames(typeof(mytest)).Sum(a=>(int)Enum.Parse(typeof(mytest),a));varOR2=(mytest)(typeof(mytest).GetEnumValues()asmytest[]).Sum(a=>(int)a);现在,虽然它们都有效,但有更简洁的方法吗?可能是我缺少的.NET方法?编辑:为了澄清,我需要函数是动态的-我不想通过指定每个enum值来计算它。