我会用什么Enum?

时间:2011-11-10 08:45:46

标签: c# enums

我已宣布枚举类型, 为它分配了一个变量 现在我把它写到控制台。 那么枚举类型在现实世界的应用程序中有什么用?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
   class Enum
{
    enum cars
    {
        Toyota, Nissan, Ferrari, Lamborghini
    }
}
class Program
{
    enum cars
    {
        Toyota, Nissan, Ferrari, Lamborghini
    }
    static void Main(string[] args)
    {
        int a = (int)cars.Ferrari;
        Console.WriteLine(a);
    }
}
}

10 个答案:

答案 0 :(得分:10)

每当过程接受一组有限的变量时,请考虑使用枚举。枚举使代码更清晰,更易读,特别是在使用有意义的名称时。

使用枚举的好处包括:

  • 减少因转置或输入数字错误而导致的错误。

  • 将来可以轻松更改值。

  • 使代码更易于阅读,这意味着错误的可能性更小 会陷入其中。

  • 确保向前兼容性。使用枚举,您的代码更少 如果将来有人更改值,可能会失败 对应于成员名称。

参考:MSDN

答案 1 :(得分:2)

您希望在程序中使用枚举值,以提高代码清晰度并使其更易于维护。枚举提供更好的错误检查和编译器警告。它们存储常量和重要值。请查看Enums以获得更好的说明。

编辑:

  • 在现实世界中,Enums可以与Visual Studio中的IntelliSense一起使用 应用
  • 当您希望能够在一组中进行选择时,它们会派上用场 常数值,以及与a相关的每个可能值 数字,它们可以在各种情况下使用。
  • 枚举类型提供 一种有效的方法来定义一组可能的命名积分常量 被分配给变量。

答案 2 :(得分:2)

enum cars
{
    Toyota, Nissan, Ferrari, Lamborghini
}

这不是最好的例子,因为有更多类型的汽车,而且新的汽车制造商会定期出现,例如:小型定制商店。

  

我会使用Enum做什么?

你将它用于不止一次选择的东西,但这些选择是离散的,并且不会发生变化(经常)。

您可以在可能需要string的地方使用它,但是您不想接受任何字符串。

类似的东西:

public enum DayOfWeek
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday,
};

public void ScheduleRecurringAppointment(DayOfWeek day)
{
    // Todo: Add appointment to DB here...
}

(请注意,这不是你自己应该写的枚举。有one in the .Net framework already)。

可以更改枚举,但这很痛苦,因为你必须重新编译使用枚举的所有代码。

答案 3 :(得分:2)

没有人指出的一件事(除非我错过了)是使用Enumeration Types设置位标志。您可以对枚举值以及按位比较执行按位运算(例如&|)。这适用于FlagsAttribute属性。

[Flags]
enum Days
{
    None = 0x0,
    Sunday = 0x1,
    Monday = 0x2,
    Tuesday = 0x4,
    Wednesday = 0x8,
    Thursday = 0x10,
    Friday = 0x20,
    Saturday = 0x40
}

class MyClass
{
    Days meetingDays = Days.Tuesday | Days.Thursday;
}

答案 4 :(得分:1)

这可能会更有用:

public enum Transmission {
  Manual,
  Automatic,
  SemiAutomatic
}

public class Car
{
   public Transmission CarTransmission { get; set; }
}

答案 5 :(得分:1)

Enum类包含许多用于处理枚举的有用方法。枚举的美妙之处在于你可以将它作为整数值处理并显示为字符串。

您可以在>>中找到更多信息http://www.c-sharpcorner.com/uploadfile/puranindia/enums-in-C-Sharp/

答案 6 :(得分:0)

以下是使用enum

的优点
  1. 您明确指定客户端代码哪些值对其有效 变量

  2. 在Visual Studio中,IntelliSense会列出已定义的值。

答案 7 :(得分:0)

您可以使用枚举类型的变量。他们只接受枚举的值,这使得编码更容易(我认为)

例如:

Enum Cars { VW, Mercedes, Ford, Opel };

...

Cars myCar = Cars.VW;

答案 8 :(得分:0)

枚举用于代码可读性,可用于将类型限制为有限的值集。

Enums的一个常见用途是用于在业务流程中对状态进行建模 - 即不能在特定的基础上添加新状态,并且需要进一步编码和测试。

答案 9 :(得分:0)

下面是一个在asp.net中使用枚举来更改每列标题文本的示例。我使用枚举来指定我想要改变的gridview中哪一列的索引。

private enum MENU_ITEM
{ 
    Customer_ID = 0,
    Customer_First_Name = 1,
    Customer_Surname = 2,
    Customer_DOB = 3,
    Customer_Phone_Number = 4,
    Customer_Email = 5,
    Customer_Update = 6,
    Customer_Delete = 7,
    Customer_Transaction = 8
}

private void populateGridHeader()
{
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_ID].Visible = false;
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_First_Name].HeaderText = "First Name";
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Surname].HeaderText = "Surname";
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_DOB].HeaderText = "Date of Birth";
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Phone_Number].HeaderText = "Phone Number";
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Email].HeaderText = "Email";
    SearchCustomer_g.Columns[(int)MENU_ITEM.Customer_Transaction].HeaderText = "New Transaction";
}