2010-10-14 129 views
0

我知道console.foregroundColor需要一個ConsoleColor枚舉作爲參數。我沒有得到的是爲什麼 - 我猜這些是字符串,所以當console.foreground接收它作爲參數時,它將使用基於這些常量的某種開關。這樣對嗎?還是有我錯過的東西?ConsoleColor枚舉問題

回答

1

Enum具有整數值,實際的ConsoleColor值爲0,1,2,3等等。此外,由於leppie指出實際映射到本機顏色值的ConsoleColor值。在控制檯的本機顏色值中 - 前景值將進入較低的四位,而背景值進入高四位。枚舉提供易用性,因此框架庫已將控制檯顏色包裝爲枚舉。

+0

我不明白你的意思是什麼「映射到本土的顏色」。如果每個元素都有其整數類型(類似索引?),那麼映射是什麼? – Ptr 2010-10-14 09:11:17

+0

例如,ConsolColor.DarkBlue的值爲1,常量(在Windows API中)FOREGROUND_BLUE的對應值也是1.請參閱http://msdn.microsoft.com/en-us/library/ms682093(VS.85)。 aspx和http://msdn.microsoft.com/en-us/library/ms682088(v=VS.85).aspx#_win32_character_attributes來了解這裏涉及的win api結構。 – VinayC 2010-10-14 10:19:27

2

控制檯僅支持16種顏色。我只能假設枚舉直接映射到本地常量,因此它不需要開關。

+0

是的,但如果它可能需要字符串(如「黑色」)作爲參數,它會是相同的,對吧?我的意思是,如果枚舉只包含元素列表,那麼console.foreground必須以某種方式區分,這意味着什麼。 – Ptr 2010-10-14 09:08:07

+0

@Ptr,看我的答案。正如leppie所指出的,由於實際枚舉值映射到本地常量,因此不需要switch語句。枚舉是一種類型安全的命名整型常量。 – VinayC 2010-10-14 09:08:23