枚举的主要用途是什么?

Red*_*wan 23 c# enums

枚举在c#中的主要用途是什么?

编辑: - 假设我想比较字符串变量与任何枚举项,那么我如何在c#中做到这一点?

Dav*_*all 45

MSDN中的定义是一个很好的起点.

枚举类型(也称为枚举或枚举)提供了一种有效的方法来定义可以分配给变量的一组命名的整数常量.

这样做的主要好处是可以以一致,富有表现力和类型安全的方式引用常量.

Employee构造函数为例,这个非常简单的类:

你可以这样做:

public class Employee
{
    private string _sex;

    public Employee(string sex)
    {
       _sex = sex;
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在您依靠用户为该字符串输入正确的值.

使用枚举,你可以改为:

public enum Sex
{
    Male = 10,
    Female = 20
}

public class Employee
{
    private Sex _sex;

    public Employee(Sex sex)
    {
       _sex = sex;
    }
}    
Run Code Online (Sandbox Code Playgroud)

这突然允许Employee类的消费者更容易地使用它:

Employee employee = new Employee("Male");
Run Code Online (Sandbox Code Playgroud)

变为:

Employee employee = new Employee(Sex.Male);
Run Code Online (Sandbox Code Playgroud)

  • @MinaGabriel哈谢谢!大约三年前,但仍然有点尴尬. (6认同)
  • +1 的答案,但我认为它应该是新员工 (2认同)
  • 我仍然无法理解为什么将int值分配给枚举内的数据 (2认同)
  • @vigamage默认情况下,枚举会将整数值分配给枚举列表中的任何内容,从0开始.您可以通过声明元素是特定的整数值来覆盖它.你可以通过做(int)Sex.Male或(int)Sex.Female看到这一点. (2认同)

spe*_*son 23

通常你会发现你有一些东西 - 数据,分类,等等 - 最好用几个可以用整数表示的离散状态之一表示.典型的例子是一年中的几个月.我们希望一年中的几个月可以表示为两个字符串("2010年8月19日")和数字("2010年8月19日").Enum提供了一种为一堆整数赋值的简洁方法,因此我们可以使用整数的简单循环来移动数月.


Muk*_*mar 9

枚举是强类型常量.枚举是一组特殊的命名值,它们都映射到一组数字,通常是整数.当您希望能够在一组常数值之间进行选择时,它们会派上用场,并且每个可能的值与一个数字相关,它们可以在各种情况下使用.正如您将在我们的示例中看到的,枚举是在我们的命名空间内的类上面定义的.这意味着我们可以使用同一名称空间中所有类的枚举.

using System;

namespace ConsoleApplication1
{
    public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

    class Program
    {
        static void Main(string[] args)
        {
            Days day = Days.Monday;
            Console.WriteLine((int)day);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Ali*_*han 6

枚举(Enum)是变量类型。我们可以在C,C#和许多其他语言中找到此变量类型。Enum的基本思想是,如果我们有一组整数类型的变量(默认情况下),则可以使用Enum而不是使用太多的int值。这是有效的方法。假设您要编写彩虹色,则可以这样编写:

const int Red = 1;
const int Orange = 2;
const int Yellow = 3;
const int Green = 4;
const int Blue = 5;
const int Indigo = 6;
const int Violet = 7;
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到太多的int声明。如果您或您的程序错误地更改了任何整数变量的值,即Violet = 115而不是7,则将很难调试。

因此,Enum来了。您可以为任何类型为整数的变量组定义Enum。对于Enum,您可以这样编写代码:

enum rainBowColors
{
 red=1,
 orange=2,
 yellow=3,
 green,
 blue=8,
 indigo=8,
 violet=16) 
}; 
Run Code Online (Sandbox Code Playgroud)

rainBowColors是一种类型,只能将相同类型的其他变量分配给该类型。在C#/ C ++中,您需要键入强制转换,而在C中,则不需要键入强制转换。

现在,如果要声明一个RainBowColors类型的变量,则在C中

enum rainBowColors variableOne = red;
Run Code Online (Sandbox Code Playgroud)

在C#/ C ++中,您可以这样操作:

rainBowColors variableOne = red;
Run Code Online (Sandbox Code Playgroud)