gpt4 book ai didi

C# 字典在另一个字典中使用 TValue

转载 作者:太空狗 更新时间:2023-10-29 23:26:08 25 4
gpt4 key购买 nike

我是 C# 的新手,有 Ruby 背景。我还有很多东西要学,这就是为什么我要问以下问题:

目标:1)我想创建一个以字符串为键和我想要的任何对象类型作为值的字典。像这样:

Dictionary<string, T>

2) 但这还不是全部。我还想要一个“主”字典,其中字符串作为键,上面描述的字典作为值。像这样:

Dictionary<string, Dictionary<string T>>

我希望它是那样的,这样我就可以像下面的例子一样工作:

MasterDictionary[Dict1].Add( Thing1 )
MasterDictionary[Dict2].Add( Thing2 )

当前代码:我正在尝试使用以下代码实现此目的

public List<string> DataTypes;
public Dictionary<string, Dictionary<string, object>> TempData;
public Dictionary<string, Dictionary<string, object>> GameData;

public Session()
{
// Create a list of all Data Types.
DataTypes = new List<string>();
DataTypes.Add("DataInfo");
DataTypes.Add("Maps");
DataTypes.Add("Tilesets");

// Create and populate TempData dictionary.
TempData = new Dictionary<string, Dictionary<string, object>>();
TempData.Add("DataInfo", new Dictionary<string, DataInfo>());
TempData.Add("Maps", new Dictionary<string, Map>());
TempData.Add("Tilesets", new Dictionary<string, Tileset>());

// Create GameData dictionary and copy TempData into it.
GameData = new Dictionary<string, object>(TempData);
}

问题:我收到以下错误

1)'System.Collections.Generic.Dictionary>.Add(string, System.Collections.Generic.Dictionary)' 的最佳重载方法匹配有一些无效参数

2)错误 10 参数 1:无法从“System.Collections.Generic.Dictionary>”转换为“System.Collections.Generic.IDictionary”

以下行用红色下划线标出

TempData.Add("DataInfo", new Dictionary<string, DataInfo>());
TempData.Add("Maps", new Dictionary<string, Map>());
TempData.Add("Tilesets", new Dictionary<string, Tileset>());

// Create GameData dictionary and copy TempData into it.
GameData = new Dictionary<string, object>(TempData);

我显然在这里做错了什么甚至是违法的,我只需要知道它是什么以及我该如何解决它!

我自己做了很多研究,但没有发现任何可以帮助我的东西。我已经看到如何制作字典的字典,但我不太确定如何告诉字典不要关心 Value 中的对象类型。

我知道“T”在这里可能会有一些用处,但我真的不知道如何使用它,因为它总是告诉我“找不到类型或 namespace 名称‘T’”

那我该怎么办呢?

提前致谢——萨沙

最佳答案

您可以将所有字典更改为字符串、对象....

但是也许,因为你来自 Ruby,所以还有另一个问题......

将所有内容放入字典中,然后在提取时必须再次计算出它们是什么类型,这可能不是最好的方法。在类型语言中,通常最好为所有内容创建类型

也许有一个类型化的对象和它们所在类型的字典会更好......

class GameResources
{
public Dictionary<string, Map> Maps { get; set;}
public Dictoinary<string, Tileset> Tileset { get; set; }
}

等等......或者很可能有一点想法,另一个类结构可能更适合你的情况

关于C# 字典在另一个字典中使用 TValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com