草庐IT

c# - 枚举类型的值

我只是想知道为什么我得到这个输出:enumMyEnum{a=1,b=2,c=3,d=3,f=d}Console.WriteLine(MyEnum.f.ToString());输出c但在单声道中输出f那为什么输出的是c呢?不是吗?编译器如何选择c?如果我这样更改代码:enumMyEnum{a=1,b=2,c=3,d=3,k=3}Console.WriteLine(MyEnum.k.ToString());输出c再来一次!另一个例子:enumMyEnum{a=3,b=3,c=3,d=3,f=d,}MessageBox.Show(MyEnum.f.ToString());输出c

c# - 我可以在尝试使用或返回枚举值时避免强制转换它吗?

如果我有以下枚举:publicenumReturnValue{Success=0,FailReason1=1,FailReason2=2//Etc...}我可以在返回时避免转换吗,像这样:publicstaticintmain(string[]args){return(int)ReturnValue.Success;}如果不是,为什么默认情况下不将枚举值视为int? 最佳答案 枚举应该是类型安全的。我认为他们并没有让它们隐式转换以阻止其他用途。尽管框架允许您为它们分配一个常量值,但您应该重新考虑您的意图。如果您主要使用枚举来存储常量

c# - 我可以在尝试使用或返回枚举值时避免强制转换它吗?

如果我有以下枚举:publicenumReturnValue{Success=0,FailReason1=1,FailReason2=2//Etc...}我可以在返回时避免转换吗,像这样:publicstaticintmain(string[]args){return(int)ReturnValue.Success;}如果不是,为什么默认情况下不将枚举值视为int? 最佳答案 枚举应该是类型安全的。我认为他们并没有让它们隐式转换以阻止其他用途。尽管框架允许您为它们分配一个常量值,但您应该重新考虑您的意图。如果您主要使用枚举来存储常量

c# - 如何将通用 Tryparse 与枚举一起使用?

我正在尝试构建从用户字符串获取的通用函数,并尝试将其解析为枚举值,如下所示:privateEnumgetEnumStringEnumType(Typei_EnumType){stringuserInputString=string.Empty;EnumresultInputType;boolenumParseResult=false;while(!enumParseResult){userInputString=System.Console.ReadLine();enumParseResult=Enum.TryParse(userInputString,true,outresultIn

c# - 如何将通用 Tryparse 与枚举一起使用?

我正在尝试构建从用户字符串获取的通用函数,并尝试将其解析为枚举值,如下所示:privateEnumgetEnumStringEnumType(Typei_EnumType){stringuserInputString=string.Empty;EnumresultInputType;boolenumParseResult=false;while(!enumParseResult){userInputString=System.Console.ReadLine();enumParseResult=Enum.TryParse(userInputString,true,outresultIn

c# - 如何使用 .NET 枚举属于特定进程的所有窗口?

我如何使用C#找到由特定进程创建的所有窗口?更新我需要使用PID枚举属于特定进程的所有窗口应用程序的(进程ID)。 最佳答案 delegateboolEnumThreadDelegate(IntPtrhWnd,IntPtrlParam);[DllImport("user32.dll")]staticexternboolEnumThreadWindows(intdwThreadId,EnumThreadDelegatelpfn,IntPtrlParam);staticIEnumerableEnumerateProcessWindowH

c# - 如何使用 .NET 枚举属于特定进程的所有窗口?

我如何使用C#找到由特定进程创建的所有窗口?更新我需要使用PID枚举属于特定进程的所有窗口应用程序的(进程ID)。 最佳答案 delegateboolEnumThreadDelegate(IntPtrhWnd,IntPtrlParam);[DllImport("user32.dll")]staticexternboolEnumThreadWindows(intdwThreadId,EnumThreadDelegatelpfn,IntPtrlParam);staticIEnumerableEnumerateProcessWindowH

C# 获取枚举值

我有一个包含以下内容的枚举(例如):英国,美国,法国,葡萄牙在我的代码中,我使用了Country.UnitedKingdom,但是如果我将它分配给一个string,我希望它的值为UK.这可能吗? 最佳答案 您不能将枚举值分配给作为开头的字符串。你必须调用ToString(),这将转换Country.UnitedKingdom到“联合王国”。有两种选择:创建Dictionary一个switch语句用一个属性装饰每个值,并用反射加载它关于他们每个人的评论...Dictionary的示例代码usingSystem;usingSystem.

C# 获取枚举值

我有一个包含以下内容的枚举(例如):英国,美国,法国,葡萄牙在我的代码中,我使用了Country.UnitedKingdom,但是如果我将它分配给一个string,我希望它的值为UK.这可能吗? 最佳答案 您不能将枚举值分配给作为开头的字符串。你必须调用ToString(),这将转换Country.UnitedKingdom到“联合王国”。有两种选择:创建Dictionary一个switch语句用一个属性装饰每个值,并用反射加载它关于他们每个人的评论...Dictionary的示例代码usingSystem;usingSystem.

c# - 你能在运行时添加到枚举类型吗

如果我有枚举类型:publicenumSport{Tennis=0;Football=1;Squash=2;Volleyball=3;}我可以在运行时以某种方式添加:PingPong=4 最佳答案 枚举有一个后备存储,如果不指定则默认为int。可以直接分配定义值之外的值:SportpingPong=(Sport)4;然后你可以检查它:if(value==(Sport)4){}这就是为什么你有静态函数Enum.IsDefined()用于检查实际值是否在预期值范围内。请注意,该函数不适用于复合标志值。boolisValueDefined