C#中与PHP关联数组相当的是什么?

4

可能是重复问题:
C#关联数组

我最近决定学习C#。之前我学过一些PHP。我看到C#有字典。这相当于PHP中的关联数组,对吗?据我所知,字典不像PHP关联数组那样保持插入顺序,对吗?如果插入顺序很重要,是否有其他等效的数据结构可以使用?

谢谢

4个回答

4

字典不保证保留插入顺序,所以不能依赖它(尽管很难迫使它打破这一点)。如果插入顺序很重要,您需要创建一个混合类,可能将List<T>封装为插入顺序,将Dictionary<TKey,T>用于索引。


Java有一个(LinkedHashMap)。在C#中真的没有相当的东西吗? - cletus
@cletus:不,.NET核心框架中真的没有相应的东西。@Marc:强制它并不难。我承认我记不清了,但我想它在某个帖子里。 - Jon Skeet
如果您倾向于使用哈希表进行排序,那么这意味着您的哈希函数很差,您的O(1)也面临风险。对于任何存储桶,您应该有接近随机的插入位置... - ShuggyCoUk

2
你可能想要查看Power Collections。我相信它们有适合你需求的实现。

1

PHP关联数组被转换为类型XmlRpcStruct。请参阅XML-RPC规范

在C#中,使用XmlRpcStruct或struct来表示PHP关联数组。

这是一个经过测试的解决方案,而不是一个草率的建议。


1

System.Collections.Specialized命名空间中有一个OrderedDictionary类,但不幸的是它不是通用的。

没有内置的、保留插入顺序的通用字典类。如果插入顺序真的很重要,你就得自己编写或查看第三方实现(如Marc & Kent建议的那样)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接