当前位置:  开发笔记 > 编程语言 > 正文

C#enums类型是否安全?

如何解决《C#enums类型是否安全?》经验,为你挑选了2个好方法。

C#enums类型是否安全?

如果没有意义?



1> Marc Gravell..:

为了给出稍微不同的答案......虽然从投射角度看这些值是类型安全的,但是一旦它们被投射它们仍然是未经检查的 - 即

enum Foo { A = 1, B = 2, C = 3 }    
static void Main()
{
    Foo foo = (Foo)500; // works fine
    Console.WriteLine(foo); // also fine - shows 500
}

因此,您应该注意检查值 - 例如,default在a switch中抛出异常.

您还可以通过以下方式检查(对于非[Flags]值):

bool isValid = Enum.IsDefined(typeof(Foo), foo);



2> Simon Keep..:

对,他们是.

以下内容来自http://www.csharp-station.com/Tutorials/Lesson17.aspx

枚举是强类型常量.它们本质上是唯一的类型,允许您将符号名称分配给整数值.在C#传统中,它们是强类型的,这意味着即使其成员的基础值相同,也不能将一种类型的枚举隐式赋值给另一种类型的枚举.同样,整体类型和枚举也不是隐含地可互换的.不同枚举类型和整数类型之间的所有赋值都需要显式强制转换.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有