C# 控制台颜色枚举问题

C# 控制台颜色枚举问题,c#,colors,console-application,C#,Colors,Console Application,我知道console.foregroundColor将ConsoleColor枚举作为参数。我不明白的是为什么-我猜这些是字符串,所以当console.foreground将其作为参数接收时,它将基于这些常量使用某种类型的开关。是这样吗?还是我遗漏了什么?控制台只支持16种颜色。我只能假设枚举直接映射到本机常量,因此它不需要开关。控制台仅支持16种颜色。我只能假设枚举直接映射到本机常量,因此它不需要开关。枚举有整数值,实际的控制台颜色值为0、1、2、3等等。此外,正如leppie指出的,Cons

我知道console.foregroundColor将ConsoleColor枚举作为参数。我不明白的是为什么-我猜这些是字符串,所以当console.foreground将其作为参数接收时,它将基于这些常量使用某种类型的开关。是这样吗?还是我遗漏了什么?

控制台只支持16种颜色。我只能假设枚举直接映射到本机常量,因此它不需要开关。

控制台仅支持16种颜色。我只能假设枚举直接映射到本机常量,因此它不需要开关。

枚举有整数值,实际的控制台颜色值为0、1、2、3等等。此外,正如leppie指出的,ConsoleColor值实际上映射到本机颜色值。在控制台的本机颜色值中,前景值进入低位四位,而背景值进入高位四位。Enum提供了易用性,因此框架库将控制台颜色包装为Enum。

Enum具有整数值,实际的控制台颜色值为0、1、2、3等等。此外,正如leppie指出的,ConsoleColor值实际上映射到本机颜色值。在控制台的本机颜色值中,前景值进入低位四位,而背景值进入高位四位。Enum提供了易用性,因此框架库将控制台颜色包装为Enum。

是的,但如果它可以将字符串(如“黑色”)作为参数,它将是相同的,对吗?我的意思是,如果enum只包含元素列表,那么console.foreground必须以某种方式区分这是什么意思。@Ptr,请参阅我的答案。正如leppie指出的,由于实际枚举值映射到本机常量,所以不需要switch语句。枚举是一种类型安全的命名整数常量。是的,但如果它可以将字符串(如“黑色”)作为参数,它将是相同的,对吗?我的意思是,如果enum只包含元素列表,那么console.foreground必须以某种方式区分这是什么意思。@Ptr,请参阅我的答案。正如leppie指出的,由于实际枚举值映射到本机常量,所以不需要switch语句。枚举是一种类型安全的命名整数常量。我不明白“映射到本机颜色”是什么意思。如果每个元素都有其整数类型(其类似索引?),那么映射是什么?例如,ConsolColor.DarkBlue的值是1,constant(在windows api中)的相应值FOREGROUND_BLUE也是1。请参阅并理解此处涉及的win api结构。我不明白“映射到本机颜色”是什么意思。如果每个元素都有其整数类型(其类似索引?),那么映射是什么?例如,ConsolColor.DarkBlue的值是1,constant(在windows api中)的相应值FOREGROUND_BLUE也是1。请参阅并了解此处涉及的win api结构。