提问人:Aaron 提问时间:11/10/2011 最后编辑:ConnellAaron 更新时间:11/28/2011 访问量:1747
我会用枚举做什么?
What would I use an Enum for?
问:
我已经声明了一个枚举类型, 为其分配一个变量 现在我正在把它写到控制台上。 那么枚举类型在实际应用中有什么用呢?
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);
}
}
}
答:
您希望在程序中使用枚举值来提高代码清晰度并使其更易于维护。枚举提供更好的错误检查和编译器警告。它们存储常量和重要值。检查枚举以获得更好的说明。
编辑:
- 枚举可以在现实世界中与 Visual Studio 中的 IntelliSense 一起使用 应用。
- 当您希望能够在一组之间进行选择时,它们会派上用场 的常量值,并且每个可能的值都与 数字,它们可以在广泛的情况下使用。
- 枚举类型提供 定义一组命名积分常量的有效方法,这些常量可以 分配给变量。
每当过程接受一组有限的变量时,请考虑使用枚举。枚举使代码更清晰、可读性更强,尤其是在使用有意义的名称时。
使用枚举的好处包括:
减少因转置或错误输入数字而导致的错误。
使将来更改值变得容易。
使代码更易于阅读,这意味着出错的可能性较小 会潜入其中。
确保向前兼容性。使用枚举,代码更少 如果将来有人更改值,可能会失败 对应于成员名称。
参考 : MSDN
enum cars
{
Toyota, Nissan, Ferrari, Lamborghini
}
这不是最好的例子,因为汽车的种类比这多得多,而且新的汽车制造商会定期出现,例如小型定制店。
我会用枚举做什么?
你会用它来做一些有不止一次选择的事情,但这些选择是离散的,并且不会(经常)改变。
你会在可能需要 的地方使用它,但你不想只接受任何字符串。string
像这样:
public enum DayOfWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
};
public void ScheduleRecurringAppointment(DayOfWeek day)
{
// Todo: Add appointment to DB here...
}
(请注意,这不是您应该自己编写的枚举。.Net 框架中已经有一个)。
您可以更改枚举,但这很痛苦,因为您必须重新编译使用枚举的所有代码。
这可能更有用:
public enum Transmission {
Manual,
Automatic,
SemiAutomatic
}
public class Car
{
public Transmission CarTransmission { get; set; }
}
以下是使用 an 的优点:enum
您为客户端代码明确指定哪些值对 变量。
在 Visual Studio 中,IntelliSense 列出定义的值。
您可以使用枚举类型的变量。他们只会接受枚举的值,这使得编码更容易(我认为)
例如:
Enum Cars { VW, Mercedes, Ford, Opel };
...
Cars myCar = Cars.VW;
枚举用于提高代码可读性,可用于将类型限制为一组有限的值。
枚举的一个常见用途是用于对业务流程中的状态进行建模,即不能临时添加新的状态,需要进一步的编码和测试。
枚举类包含许多用于处理枚举的有用方法。枚举的美妙之处在于,您可以将其处理为整数值并显示为字符串。
您可以在 >> 中找到更多信息 http://www.c-sharpcorner.com/uploadfile/puranindia/enums-in-C-Sharp/
还没有人指出的一件事(除非我错过了)是使用 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;
}
下面是一个在 asp.net 中使用枚举来更改每列的标题文本的示例。我使用枚举来指定要更改的网格视图中哪一列的索引。
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";
}
上一个:静态/类变量的值是如何传递的?
下一个:mod_rewrite不工作?
评论