gpt4 book ai didi

c# - 我可以创建泛型字典吗?

转载 作者:IT王子 更新时间:2023-10-29 03:51:15 27 4
gpt4 key购买 nike

我想创建一个带有字符串键的字典对象,保存通用类型的值。我想它看起来像这样:

Dictionary<string, List<T>> d = new Dictionary<string, List<T>>();  

并允许我添加以下内容:

d.Add("Numbers", new List<int>());
d.Add("Letters", new List<string>());

我知道我可以对字符串列表执行此操作,例如,使用以下语法:

Dictionary<string, List<string>> d = new Dictionary<string, List<string>>();
d.Add("Key", new List<string>());

但如果可能的话,我想为通用列表做这件事......

然后是 2 个问题:

  1. 这可能吗?
  2. 语法是什么?

最佳答案

编辑:现在我重读了这个问题......

您不能这样做,但自定义集合可以在一定程度上处理它。你基本上有一个通用的 Add 方法:

public void Add<T>(string key, List<T> list)

(集合本身不会是通用的 - 除非您想使键类型通用。)

不过,您无法以强类型方式从中提取 值,因为编译器不知道您为特定键使用了哪种类型。如果您将键作为类型本身,您会以稍微更好的情况结束,但现有集合仍然不支持这种情况。这就是我原来的答案所回应的情况。

编辑:原始答案,当我没有完全正确阅读问题时,但无论如何都可能提供信息......

不,恐怕您不能使一种类型参数依赖于另一种类型参数。这只是人们可能想在泛型类型系统中表达但 .NET 的约束不允许的事情之一。这样的问题总是会出现,.NET 设计者选择让泛型相对简单。

但是,您可以编写一个集合来相当轻松地实现它。我有 an example in a blog post它只保留一个值,但很容易将其扩展为使用列表。

关于c# - 我可以创建泛型字典吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654752/

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