Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用枚举键替代字典?_C#_.net - Fatal编程技术网

C# 使用枚举键替代字典?

C# 使用枚举键替代字典?,c#,.net,C#,.net,在我的解决方案中,我严重依赖于以枚举作为键的字典。我发现这个结构很容易理解和阅读 上面提到的一个重要障碍是不可能将其序列化。有关此操作的更多信息,请参阅 我的问题是: 是否有一种同样可读且直观的模式,可以用内置的json序列化程序替换json可序列化的字典 今天,我将a.Instance.QueryableFields[Fields.Title]替换为a.Instance.QueryableFields[Fields.Title.ToString]。不太优雅,而且容易出错 您可以在此处轻松地用数

在我的解决方案中,我严重依赖于以枚举作为键的字典。我发现这个结构很容易理解和阅读

上面提到的一个重要障碍是不可能将其序列化。有关此操作的更多信息,请参阅

我的问题是: 是否有一种同样可读且直观的模式,可以用内置的json序列化程序替换json可序列化的字典


今天,我将a.Instance.QueryableFields[Fields.Title]替换为a.Instance.QueryableFields[Fields.Title.ToString]。不太优雅,而且容易出错

您可以在此处轻松地用数组替换字典,因为在C中,枚举在内部保存为整数:

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

object[] dictionary = new object[3];
dictionary[(int)MyEnum.Zero] = 4;
编辑:参见注释


您也可以用Dictionary替换Dictionary。

序列化它时,只需选择字符串值。它不是很整洁,但很管用

a.Instance.QueryableFields.ToDictionary(x => x.Key.ToString(), x => x.Value)

只有在确保值从0到array.Length-1之间没有任何中断时,这才有意义。如果您有一个类似{A=0,B=42,C=31415}的枚举,那么您应该创建一个由31416个元素组成的数组……枚举是存储为字典值的对象上的属性吗?在这种情况下,我可能建议使用枚举值作为哈希代码。这是如何工作的?你能给我举个例子吗?这是我共同指定的一个选项。但是我必须编写自己的序列化方法。谢谢你的建议,但我正在寻找一种方法来取代整个东西。字典或枚举。