枚举的主要用途是什么?

时间:2010-08-19 06:55:39

标签: c# enums

c#中的Enumeration的主要用途是什么?

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

10 个答案:

答案 0 :(得分:44)

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

  

枚举类型(也称为   枚举或枚举)提供   定义一组命名的有效方法   积分常数可能是   分配给变量。

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

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

你可以这样做:

public class Employee
{
    private string _sex;

    public Employee(string sex)
    {
       _sex = sex;
    }
}

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

使用枚举,您可以改为:

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

public class Employee
{
    private Sex _sex;

    public Employee(Sex sex)
    {
       _sex = sex;
    }
}    

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

Employee employee = new Employee("Male");

变为:

Employee employee = new Employee(Sex.Male);

答案 1 :(得分:22)

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

答案 2 :(得分:8)

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

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();
        }
    }
}

答案 3 :(得分:5)

枚举(Enum)是一种变量类型。我们可以在C,C#和许多其他语言中找到这个变量类型。 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;

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

所以,这是Enum。您可以为任何变量类型组合定义Enum。对于Enum,您可以编写如下代码:

enum rainBowColors
{
 red=1,
 orange=2,
 yellow=3,
 green,
 blue=8,
 indigo=8,
 violet=16) 
}; 

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

现在,如果你想声明一个类型为rainBowColors的变量,那么在C

enum rainBowColors variableOne = red;

在C#/ C ++中你可以这样做:

rainBowColors variableOne = red;

答案 4 :(得分:3)

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

http://msdn.microsoft.com/en-us/library/cc138362.aspx

答案 5 :(得分:3)

C#中有两种枚举含义。

枚举(名词)是一组命名值。例如:

public enum Result {
  True,
  False,
  FileNotFound
}

枚举(动词枚举的名词形式)是指您逐步浏览集合中的项目。

IEnumerable<T>接口由提供枚举功能的类使用。数组就是这种类的一个简单例子。另一个例子是LINQ如何使用它将结果作为可枚举的集合返回。

编辑:

如果要将字符串与枚举值进行比较,则必须将字符串解析为枚举类型:

if ((Result)Enum.Parse(typeof(Result), theString) == Result.True) ...

或将枚举值转换为字符串:

if (theString == Result.True.ToString()) ...

(请注意如何比较这些值,具体取决于您是否需要大小写匹配。)

如果要枚举集合并查找字符串,可以使用foreach命令:

foreach (string s in theCollection) {
  if (s == theString) {
    // found
  }
}

答案 6 :(得分:2)

使用Enum的另一个好处是,如果需要更改任何整数值,我们只需要更改Enum定义,我们就可以避免在整个地方更改代码。

答案 7 :(得分:2)

枚举(ENUM)

枚举是一种值类型,带有一组相关的命名常量,通常称为枚举器列表。 enum关键字用于声明枚举。它是一种原始数据类型,由用户定义。

枚举类型可以是整数(float,int,byte,double等)。但如果你在int旁边使用它必须被施放。

enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; 

答案 8 :(得分:0)

Lets Take an Example we are taking normal constant in a class like int a=10;

by mistakely we assign new value to that variable in that same class like a=20; then we will get wrong data when we want access them. enum provide secure way of accessing constant.

Also if we have many feild constant in a class we had to memorize them if we want to use them in a class. but enum contains group of related name constant, if we want to access the constant then only we had to memorize enum name.

答案 9 :(得分:0)

根据我的经验,枚举在非常具体的情况下有效,应该在您绝对需要在应用程序中维护时使用。当您与多个开发人员合作并且一些新开发人员加入项目并且可以向应用程序添加枚举时没有错误所有内容构建但是您有另一个完整的堆栈开发人员在查找中维护此相同列表时,Enums会出现问题表以不同的顺序。 Kaboom !!!!

即使不是故意的,也要多次使用那种方式。经验法则不会在应用程序中维护超过5或6个项目的枚举列表。如果更高,您可以将它们存储在您选择的数据库中的查找表中。