我想知道,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}}工作,但如果无法更改表示,我将不得不处理字符。
答案 0 :(得分:4)
是的,您可以更改枚举的类型,但不能更改为char
。因为byte
可以很好地工作,因为它是1字节类型。检查enum (C# reference) on MSDN(强调我的):
每个枚举类型都有一个基础类型,除了char 之外,它可以是任何整数类型。枚举元素的默认基础类型是int。要声明另一个整数类型的枚举,例如byte,在标识符后跟类型后使用冒号,如下例所示。
enum Days : byte {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
枚举的已批准类型为
byte
,sbyte
,short
,ushort
,int
,uint
,{{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 {}