草庐IT

c# - 在 C# 中使用枚举作为泛型类型参数

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:EnumtypeconstraintsinC#是否可以通过使用其包装类Enum将enum类型用作通用参数?我有不同的枚举:enumerrors1{E1,E3,E8};enumerrors2{E0,E2,E9};enumerrors3{E7,E4,E5};通过下面的类声明我认为我可以实现它:publicclassMyErrorswhereT:Enum{Tenumeration;publicTgetEnumeration(){returnenumeration;}staticvoidMain(string[]ar

c# - 在 C# 中将整数转换为枚举

在C#中有些东西我无法理解。您可以将超出范围的int转换为enum并且编译器不会退缩。想象一下这个枚举:enumColour{Red=1,Green=2,Blue=3}现在,如果你写:Coloureco;eco=(Colour)17;编译器认为这很好。还有运行时。嗯?为什么C#团队决定让这成为可能?这个决定忽略了使用枚举的要点,我认为,在这样的场景中:voidDoSomethingWithColour(Coloureco){//dosomethingtoeco.}在像C#这样的强类型语言中,我想假设eco将始终持有一个合法的Colour值。但这种情况并非如此。程序员可以使用分配给eco

c# - 在 C# 中将整数转换为枚举

在C#中有些东西我无法理解。您可以将超出范围的int转换为enum并且编译器不会退缩。想象一下这个枚举:enumColour{Red=1,Green=2,Blue=3}现在,如果你写:Coloureco;eco=(Colour)17;编译器认为这很好。还有运行时。嗯?为什么C#团队决定让这成为可能?这个决定忽略了使用枚举的要点,我认为,在这样的场景中:voidDoSomethingWithColour(Coloureco){//dosomethingtoeco.}在像C#这样的强类型语言中,我想假设eco将始终持有一个合法的Colour值。但这种情况并非如此。程序员可以使用分配给eco

c# - 如何检查是否设置了多个枚举标志?

我只想知道是否设置了一个枚举标志,而不是设置了哪些。我目前的想法是检查它是否是2的幂。是否有更好的方法内置到枚举类型中?[Flags]enumFoo{Flag1=0x01,Flag2=0x02,Flag3=0x04,Flag4=0x08,Flag5=0x10,Flag6=0x20,Flag7=0x40,Flag8=0x80}privateboolExactlynOneFlagSet(FoomyFoo){varx=(byte)myFoo;return(x!=0)&&((x&(x-1))==0);//Checkifapowerof2}if(!ExactlynOneFlagSet(Foomy

c# - 如何检查是否设置了多个枚举标志?

我只想知道是否设置了一个枚举标志,而不是设置了哪些。我目前的想法是检查它是否是2的幂。是否有更好的方法内置到枚举类型中?[Flags]enumFoo{Flag1=0x01,Flag2=0x02,Flag3=0x04,Flag4=0x08,Flag5=0x10,Flag6=0x20,Flag7=0x40,Flag8=0x80}privateboolExactlynOneFlagSet(FoomyFoo){varx=(byte)myFoo;return(x!=0)&&((x&(x-1))==0);//Checkifapowerof2}if(!ExactlynOneFlagSet(Foomy

c# - 处理枚举时没有默认的switch语句

自从我开始使用.NET以来,这一直是我的烦恼,但我很好奇以防我遗漏了什么。我的代码片段无法编译(请原谅示例的强制性质),因为(根据编译器)缺少返回语句:publicenumDecision{Yes,No}publicclassTest{publicstringGetDecision(Decisiondecision){switch(decision){caseDecision.Yes:return"Yes,that'smydecision";caseDecision.No:return"No,that'smydecision";}}}现在我知道我可以简单地放置一个默认语句来摆脱编译器警

c# - 处理枚举时没有默认的switch语句

自从我开始使用.NET以来,这一直是我的烦恼,但我很好奇以防我遗漏了什么。我的代码片段无法编译(请原谅示例的强制性质),因为(根据编译器)缺少返回语句:publicenumDecision{Yes,No}publicclassTest{publicstringGetDecision(Decisiondecision){switch(decision){caseDecision.Yes:return"Yes,that'smydecision";caseDecision.No:return"No,that'smydecision";}}}现在我知道我可以简单地放置一个默认语句来摆脱编译器警

c# - 如何设置枚举标志的所有位

我想知道将enum标志的所有位设置为1的通用方法。我只想要一个enum返回所有比较,而不考虑其他枚举。这段代码有效;[Flags]publicenumSomeRightEnum:uint{CanDoNothing=0,CanDoSomething=1但在上面的代码中,因为它是uint,我们设置了“F”的数量,如果它是int,它就不会工作。因此,无论数据类型如何(int,int64,uint等) 最佳答案 最简单的可能是:enumFoo{blah=1,....all=~0}对于基于无符号的枚举:enumFoo:uint{blah=1,

c# - 如何设置枚举标志的所有位

我想知道将enum标志的所有位设置为1的通用方法。我只想要一个enum返回所有比较,而不考虑其他枚举。这段代码有效;[Flags]publicenumSomeRightEnum:uint{CanDoNothing=0,CanDoSomething=1但在上面的代码中,因为它是uint,我们设置了“F”的数量,如果它是int,它就不会工作。因此,无论数据类型如何(int,int64,uint等) 最佳答案 最简单的可能是:enumFoo{blah=1,....all=~0}对于基于无符号的枚举:enumFoo:uint{blah=1,

c# - 当值已知时获取枚举名称

我有一个枚举,其中有不同的颜色。我想向某个函数传递int并让它返回该位置枚举中的颜色名称。有什么方法可以做到这一点? 最佳答案 return((MyEnumClass)n).ToString(); 关于c#-当值已知时获取枚举名称,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3327883/