gpt4 book ai didi

C# 将枚举转换为字符

转载 作者:行者123 更新时间:2023-11-30 13:21:51 25 4
gpt4 key购买 nike

所以我有一个这样的枚举:

enum element
{
Side = '|', Top = '-', Corner = '.'
}

然后我有一个二维字符数组,它只包含字符 | - .

但是当我尝试写:

array[2, 3] = element.Side; 

我收到一条错误消息“无法将类型元素隐式转换为‘char’”

那么...我做错了什么?有没有一种优雅的方法可以将我的二维 char 数组转换为包含相应枚举的数组?我希望你明白我的问题。

最佳答案

您必须将 element.Side 转换为字符:

arr[2, 3] = (char)element.Side

Why you should do this?

enum 关键字用于声明枚举,这是一种独特的类型,由一组称为枚举器列表的命名常量组成。

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

So what is happening by declaring your enum?

在幕后,编译器为枚举的每个字符生成相应的整数表示。您可以通过创建控制台应用程序并尝试向控制台写入以下内容来验证这一点:

(int)element.Side

你会得到124。请检查here验证124是竖线的十进制表示。

此外,您可以使用反汇编器来验证这一点。下图是使用 IL DASM 拍摄的。

enter image description here

如果您单击 Side: public static literal...,将打开一个包含以下语句的新窗口。

enter image description here

什么是 0x0000007C?

竖线的十六进制表示!您可以找到有关此 here 的更多信息.

您可以找到关于 enum 的更多信息 herehere .

关于C# 将枚举转换为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com