C#中的数据结构用于模拟元组的Python元组

Jav*_*ene 0 c# python data-structures

我在Python中有元组元组的数据.例如:

STATES = (
    (0, 'NO RUN ALLOWED'),
    (1, 'STOPPED'),
    (2, 'READY FOR RESTART'),
    (3, 'END NEXT GAME'),
    (4, 'RUNNING'),
)
Run Code Online (Sandbox Code Playgroud)

我知道Python中的元组访问是O(1),我想在C#中获得这样的东西.我已经在字典中思考了,但我也认为它在性能方面可能有害.任何的想法?

小智 5

如果您担心应用程序状态,最好使用一个enum用于此目的.

public enum States
{
    NotSet, // Good design to consider 0 as an error condition!
    NoRunAllowed,
    Stopped,
    ReadyForRestart,
    EndNextGame,
    Running
}
Run Code Online (Sandbox Code Playgroud)

由于枚举默认情况下初始化为0,因此建议将其视为无效状态.此外,当Enum用于标志时,当要测试的值为0时,Enum.HasFlag总是返回true(请参阅FlagsAttribute).

使用DescriptionAttribute将人类可读的名称应用于各个枚举选项以在UI中显示也是很常见的.