在C#中定义枚举表示类型

时间:2014-03-24 11:09:00

标签: c# enums

我想知道,C#是否有任何可能性将default (integer) enum代表char更改为权重较轻的内容,如Array

你们中的许多人会问我为什么要这样做?答案很简单:

我必须在巨大的integer工作。 我的PC允许我为540 000 000个元素(2048 * 2048 * 128)的整数数组分配内存。每个人都知道Char需要的内存比Char多4倍。

2 000 000 000表示给我Enum元素进行操作。

编程masive算法更容易在char而不是{{1}}工作,但如果无法更改表示,我将不得不处理字符。

6 个答案:

答案 0 :(得分:4)

是的,您可以更改枚举的类型,但不能更改为char。因为byte可以很好地工作,因为它是1字节类型。检查enum (C# reference) on MSDN(强调我的):

  

每个枚举类型都有一个基础类型,除了char 之外,它可以是任何整数类型。枚举元素的默认基础类型是int。要声明另一个整数类型的枚举,例如byte,在标识符后跟类型后使用冒号,如下例所示。

enum Days : byte {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
  

枚举的已批准类型为bytesbyteshortushortintuint,{{1} },或long

答案 1 :(得分:1)

是的,您可以指定基础类型

public enum MyEnum : byte
{
}

答案 2 :(得分:1)

enum MyEnum : byte
{
    ...

就是这样。

答案 3 :(得分:1)

您可以指定枚举的基础类型。来自enum (C# Reference)

  

每个枚举类型都有一个基础类型,可以是任何类型   整数类型除了char。默认的基础类型的枚举   元素是int。声明另一个整数类型的枚举,例如   byte,在标识符后跟类型

后使用冒号
public enum YourEnum : byte
{
    Foo,
    Bar
}

答案 4 :(得分:1)

documentation告诉你如何做。

  

每个枚举类型都有一个基础类型,可以是任何类型   整数类型除了char。默认的基础类型的枚举   元素是int。声明另一个整数类型的枚举,例如   byte,在标识符后跟类型后使用冒号,如图所示   在以下示例中。

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

请注意,在C#中char是两个字节宽。你可能想要使用byte。但正如您从文档中看到的那样,编译器会拒绝您尝试使用char

答案 5 :(得分:0)

简单地声明另一个整数类型的枚举,例如像这样的字节:

Public enum MyEnum:byte {}