如何在C#中使用字符串键和值制作字符串多维数组?

时间:2018-12-07 16:57:12

标签: c# arrays

嗨,我如何在c#中制作这样的数组??: 设置宽度和高度是从文件加载的

properties["settings"]["width"] = "bbb";
properties["settings"]["height"] = "cccc";

和dynamic_string_key是从文件加载的密钥,我不知道将有多少个或什么密钥名称和值:)

properties["sets_of_data"][dynamic_string_key]= "lalala";
properties["sets_of_data"][dynamic_string_key]= "lalala";
properties["sets_of_data"][dynamic_string_key]= "lalala";
properties["sets_of_data"][dynamic_string_key]= "lalala";

4 个答案:

答案 0 :(得分:2)

C#中的数组仅允许您通过索引(整数)查找元素,而不是通过任意字符串查找元素。在C#中,这是Dictionary<>

您可以使用字典中的字典,但这并不容易:

var data = new Dictionary<string, Dictionary<string, string>>();
data["settings"] = new Dictionary<string, string>();
data["settings"]["width"] = "bbb";

但这似乎过于复杂。如果您知道自己将拥有“设置”,那么仅拥有一个用于设置的字典可能更易读:

var settings = new Dictionary<string, string>();
settings["width"] = "bbb";

答案 1 :(得分:1)

如果您的文件是JSON,则可以使用JSON.NET并像这样

JObject obj = JObject.Parse(File.ReadAllText("foo.json"));
var bar = (string)obj["foo"]["bar"];

答案 2 :(得分:0)

您可以使用

Dictionary<string, Dictionary<string, string>> properties =
Dictionary<string, Dictionary<string, string>>
{
    {
        "settings",
        new Dictionary<string, string>
        {
            {"width", "200"},
            {"height", "150"},
        }
    }
};  

答案 3 :(得分:0)

或者您可以使用元组,特别是命名元组

var exampleNamedTuple = (Height: 0, Width: 0, Value: "");

var list = new List<(int Height, int Width, string Value)>();
list.Add(exampleNamedTuple);

var height = list.First().Height;
var width = list.First().Width;
var value = list.First().Value;

然后您可以将其分配给您的设置属性。

https://docs.microsoft.com/en-us/dotnet/csharp/tuples