使用枚举键替代词典?

Fon*_*a16 5 .net c#

在我的解决方案中,我非常依赖字典作为关键字.我发现很容易理解和阅读这种结构.

上述的一个重要障碍是无法将其序列化.有关详细信息,请参阅Json Serialize Dictionary <Enum,Int32>的问题.

我的问题是:
是否有一个同样可读和直观的模式替换Dictionary<enunm,object> json序列化与内置的json序列化器?

今天我换a.Instance.QueryableFields[Fields.Title]a.Instance.QueryableFields[ Fields.Title.ToString()].不是很优雅,它是错误的开放.

Sim*_*mon -1

您可以在这里轻松地将字典替换为数组,就像在 C# 中枚举在内部保存为整数一样:

public enum MyEnum { Zero=0, One, Two };

object[] dictionary = new object[3];
dictionary[(int)MyEnum.Zero] = 4;
Run Code Online (Sandbox Code Playgroud)

编辑:(见评论)

您也可以替换Dictionary<Enum, Object>Dictionary<Int, Object>.

  • 仅当您确定值从“0”到“array.Length-1”没有任何中断时,这才有意义。如果你有一个像“{A=0, B=42, C=31415}”这样的枚举,你应该创建一个包含“31416”元素的数组...... (5认同)