草庐IT

类中的 C# 公共(public)枚举

我有一个包含公共(public)枚举的类的程序,如下所示:publicclassCard{publicenumcard_suits{Clubs,Hearts,Spades,Diamonds}...我想在项目的其他地方使用它,但如果不使用Card.card_suit就做不到。有谁知道C#中是否有一种方法可以声明这一点,以便我能够声明card_suitssuit;没有引用它所在的类? 最佳答案 目前,您的enum嵌套在Card类中。您所要做的就是将enum的定义移出类://Abetternamewhichfollowsconventio

c# - 验证枚举值

我需要验证一个整数以了解它是否是一个有效的枚举值。在C#中执行此操作的最佳方法是什么? 最佳答案 您一定会喜欢这些认为数据不仅总是来自UI,而且是您可以控制的UI的人!IsDefined适用于大多数情况,您可以从:publicstaticboolTryParseEnum(thisintenumValue,outTEnumretVal){retVal=default(TEnum);boolsuccess=Enum.IsDefined(typeof(TEnum),enumValue);if(success){retVal=(TEnum)

c# - 验证枚举值

我需要验证一个整数以了解它是否是一个有效的枚举值。在C#中执行此操作的最佳方法是什么? 最佳答案 您一定会喜欢这些认为数据不仅总是来自UI,而且是您可以控制的UI的人!IsDefined适用于大多数情况,您可以从:publicstaticboolTryParseEnum(thisintenumValue,outTEnumretVal){retVal=default(TEnum);boolsuccess=Enum.IsDefined(typeof(TEnum),enumValue);if(success){retVal=(TEnum)

c# - 当位掩码(标志)枚举变得太大时该怎么办

我在我的应用程序中有一组非常大的权限,我用Flags枚举表示。它正在快速接近长数据类型的实用上限。而且我被迫想出一个策略来尽快过渡到不同的结构。现在,我可以将这个列表分解成更小的部分,但是,根据我们的应用程序布局,这已经只是我们应用程序总体权限的一个子集。在管理权限时,我们将这种区别广泛用于显示目的,如果可以避免的话,我宁愿此时不必重新访问该代码。还有其他人遇到过这个问题吗?你是怎么熬过来的?一般示例很好,但如果有任何我可以用来完成工作的特定语言技巧,我对特定于c#的示例最感兴趣。可能不是必需的,但这是当前为我正在处理的应用程序部分定义的权限列表。//SubgroupWebAgent[

c# - 当位掩码(标志)枚举变得太大时该怎么办

我在我的应用程序中有一组非常大的权限,我用Flags枚举表示。它正在快速接近长数据类型的实用上限。而且我被迫想出一个策略来尽快过渡到不同的结构。现在,我可以将这个列表分解成更小的部分,但是,根据我们的应用程序布局,这已经只是我们应用程序总体权限的一个子集。在管理权限时,我们将这种区别广泛用于显示目的,如果可以避免的话,我宁愿此时不必重新访问该代码。还有其他人遇到过这个问题吗?你是怎么熬过来的?一般示例很好,但如果有任何我可以用来完成工作的特定语言技巧,我对特定于c#的示例最感兴趣。可能不是必需的,但这是当前为我正在处理的应用程序部分定义的权限列表。//SubgroupWebAgent[

c# - 枚举超过 2^32 的标志

我在我的应用程序中使用枚举标志。Enum可以有大约50+个值,因此值最多可达2^50。我只是想知道,我可以使用Math.Pow(2,variable)来计算这些吗?当我尝试这样做时,我得到一个常量值编译时错误。除了手动计算2的这些次方并将其输入外,还有其他方法吗?这是我正在做的:[Flags]internalenumRiskStates:long{None=0,AL=Convert.ToInt64(Math.Pow(2,0)),AK=2,AZ=4,AR=8,CA=16,CO=32,CT=64,DC=128,DE=256,FL=512,GA=1024,HI=2048,ID=4096,IL

c# - 枚举超过 2^32 的标志

我在我的应用程序中使用枚举标志。Enum可以有大约50+个值,因此值最多可达2^50。我只是想知道,我可以使用Math.Pow(2,variable)来计算这些吗?当我尝试这样做时,我得到一个常量值编译时错误。除了手动计算2的这些次方并将其输入外,还有其他方法吗?这是我正在做的:[Flags]internalenumRiskStates:long{None=0,AL=Convert.ToInt64(Math.Pow(2,0)),AK=2,AZ=4,AR=8,CA=16,CO=32,CT=64,DC=128,DE=256,FL=512,GA=1024,HI=2048,ID=4096,IL

c# - 在 C# 中将 Int 转换为通用枚举

类似于CastinttoenuminC#但我的枚举是一个通用类型参数。处理此问题的最佳方法是什么?例子:privateTConvertEnum(inti)whereT:struct,IConvertible{return(T)i;}生成编译器错误Cannotconverttype'int'to'T'完整代码如下,其中value可以是int,也可以是null。privateint?TryParseInt(stringvalue){vari=0;if(!int.TryParse(value,outi)){returnnull;}returni;}privateT?TryParseEnum(

c# - 在 C# 中将 Int 转换为通用枚举

类似于CastinttoenuminC#但我的枚举是一个通用类型参数。处理此问题的最佳方法是什么?例子:privateTConvertEnum(inti)whereT:struct,IConvertible{return(T)i;}生成编译器错误Cannotconverttype'int'to'T'完整代码如下,其中value可以是int,也可以是null。privateint?TryParseInt(stringvalue){vari=0;if(!int.TryParse(value,outi)){returnnull;}returni;}privateT?TryParseEnum(

c# - 任何人都知道缺少枚举通用约束的良好解决方法?

我想做的是这样的:我有带有组合标记值的枚举。publicstaticclassEnumExtension{publicstaticboolIsSet(thisTinput,TmatchTo)whereT:enum//theconstraintIwantthatdoesn'texistinC#3{return(input&matchTo)!=0;}}那么我可以这样做:MyEnumtester=MyEnum.FlagA|MyEnum.FlagBif(tester.IsSet(MyEnum.FlagA))//actonflaga不幸的是,C#的泛型where约束没有枚举限制,只有类和结构。C