当前位置: 首页 > 编程语言 > C#

c#枚举长值分享

时间:2023-04-10 18:30:28 C#

c#枚举长值我想知道为什么这个声明:publicenumECountry:long{None,Canada,UnitedStates}它的任何值都需要强制转换?长ID=ECountry.Canada;//错误无法将类型“ECountry”隐式转换为“long”。//存在显式转换(是不是少了一个强制转换?)除了强制转换,有没有办法直接从枚举中强制转换,从中获取长值?这行不通,例如:publicenumECountry:long{None=0L,Canada=1L,UnitedStates=2L}问题不在于底层类型仍然是int。很长,可以给成员赋长值。但是,您永远不能在不进行枚举转换的情况下将枚举值分配给整数类型。这应该有效:publicenumECountry:long{None,Canada,UnitedStates=(long)int.MaxValue+1;}//val将等于*long*值int.MaxValue+1longval=(long)ECountry.UnitedStates;枚举的默认基础类型是int。enum可以是除char之外的任何整数类型。如果你想要它很长,你可以这样做://UsinglongenumeratorsusingSystem;publicclassEnumTest{enumRange:long{Max=2147483648L,Min=255L};staticvoidMain(){longx=(long)Range.Max;longy=(long)Range.Min;Console.WriteLine("最大值={0}",x);Console.WriteLine("Min={0}",y);}}actor阵容在这里很重要。正如@dlev所说,在枚举中使用long的目的是为了支持大量的标志(超过32个,因为2^32是4294967296,而long可以容纳超过2^32个)。您必须使用枚举来获取它的值,否则它将保留来自msdn的枚举类型。在此示例中,基本类型选项用于声明其成员类型为long的枚举。请注意,即使枚举的基础类型是long,枚举成员仍必须使用强制转换显式转换为long类型。//keyword_enum2.cs//使用长枚举器publicclassEnumTest{enumRange:long{Max=2147483648L,Min=255L};staticvoidMain(){longx=(long)Range.Max;longy=(long)Range.Min;Console.WriteLine("最大值={0}",x);Console.WriteLine("Min={0}",y);}}yieldmax=2147483648min=255AFAIK你得到一个演员。MSDN文章说:“但是,从枚举类型转换为整数类型需要显式转换”(int或long)你可以看看:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum以上就是C#学习教程:c#长值共享枚举的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击右转联系管理员删除。如需转载请注明出处: